Удаление строки в файле Excel с помощью Python Pandas на основе нескольких условий
Пытаюсь решить задачу удаления строк в excel файле на основании нескольких условий (нужно удалить строки содержащте ячейки с цифрами не равными 0 и имеющие ячеки содержащие "+").
path_to_file = filedialog.askopenfilename()
dataFrameFromExcel = pd.read_excel(path_to_file)
for i in range(0, int(len(dataFrameFromExcel.index))):
if dataFrameFromExcel.iloc[i][0] == "+" and dataFrameFromExcel.iloc[i][1] != 0 :
dataFrameFromExcel = dataFrameFromExcel.drop(labels = i)
name = str("otvet.xlsx")
dataFrameFromExcel.to_excel(name)
Входные данные:
- 0
- 5
- 2
+ 3
- 1
+ 1
- 0
+ 1
- 2
- 9
- 1
- 3
Выходные данные:
- 0
0 - 5
1 - 2
3 - 1
5 - 0
7 - 2
8 - 9
9 - 1
10 - 3
При удалении строк при использовании одного условия явных проблем нет.
Буду признателен за помощь.
Дополнение к коментарию для @Step1709
print(dataFrameFromExcel)
Статус Номер
0 - 0
1 - 5
2 - 2
3 + 3
4 - 1
5 + 1
6 - 0
7 + 1
8 - 2
9 - 9
10 - 1
11 - 3
Ответы (2 шт):
должно решить вашу задачу:
dataFrameFromExcel = dataFrameFromExcel.drop(dataFrameFromExcel[(dataFrameFromExcel[0] == '+') & (dataFrameFromExcel[1] != 0)].index)
Здесь с помощью фильтрации мы получаем индексы строк, которые необходимо удалить, а затем удаляем их с помощью drop.
Можно отфильтровать фрейм с помощью булева массива. Сначала делаем булев массив с условиями '+' и не 0, затем инвертируем его ~ и фильтруем фрейм - в результирующем фрейме останутся только те строки, где в булевом массиве True.
df = pd.DataFrame([['+', '-', '+', '-', '+', '-', '+', '-', '+', '-'], [0, 1, 2, 3, 7, 2, 0, 1, 2, 0]]).T
df = df[~(df[0].eq('+') & df[1].ne(0))]
print(df)
0 1
0 + 0
1 - 1
3 - 3
5 - 2
6 + 0
7 - 1
9 - 0