Как выборочно удалить строки по частичному текстовому соответствию из ячейки pandas
Есть большой xslx файл (краткий пример привёл ниже). Вопрос: как мне удалить в файле все строки, где хотя бы в одной ячейке которых, есть слово "Итог"? Нужно именно удалить, а не отфильтровать, без оставления пустой строки)) никак не могу понять как нужно написать условие(( Файлы огромные (около 7Мб), поэтому не хочу постоянно пользоваться топором в виде текстового редактора excel.
Ответы (3 шт):
import pandas as pd
# Загрузка файла Excel в DataFrame
df = pd.read_excel('example.xlsx')
# Перебор строк и удаление строк, в которых есть слово "Итог"
for index, row in df.iterrows():
if 'Итог' in row.values:
df.drop(index, inplace=True)
# Сохранение обновленного DataFrame обратно в файл Excel
df.to_excel('example_filtered.xlsx', index=False)
Учитывая инфу из вашего предыдущего вопроса по этой теме, что 'Итог' может быть в любом столбце:
cols = ['Город', 'Заказы'] # с помощью df.columns получаем все столбцы и вставляем их в список
def has_itog(array):
return 'Итог' in array
for i in cols:
df[i] = df[i].apply(lambda x: x.split())
df = df[~df[i].apply(has_itog)].copy()
df[i] = df[i].apply(lambda x: ' '.join(x))
df.reset_index(drop=True, inplace=True)
Единственное-столбцы с числами (если там тоже встречается Итог (если не встречается, то не указываем эти столбцы в список cols)) должны содержать строки(str), а не int/float, после выполнения отброса строк с Итогом, можно вернуть нужным столбцам тип дынных int/float.
