Как удалить текстовые значения в ячейке xslx с помощью pandas?
Есть большой xslx файл (пример привёл ниже). Вопрос: как мне удалить в файле все строки, в одной ячейке которой, есть слово "Итог"? Нужно именно удалить, а не отфильтровать)) никак не могу понять как нужно написать условие((
Файл огромный (около 7Мб), поэтому не хочу пользоваться топором в виде текстового редактора excell.
Ответы (3 шт):
Я не совсем считываю весь контекст вашего вопроса, поэтому я опишу для вас общий примерный процесс того, как удаляются строки из xlsx файла посредством pandas.
Представим у нас есть следующая таблица kek.xlsx:
Мы хотим, допустим, удалить из неё строки в котором поле age больше 30 и пересохранить её, например, в kek2.xlsx. Для этого мы можем использовать следующий код:
import pandas as pd
# Загрузка файла Excel в DataFrame
df = pd.read_excel('01.06.23\kek.xlsx')
# Условие для удаления строк
condition = df['age'] > 30
# Удаление строк, удовлетворяющих условию
df = df[~condition]
# Сохранение измененного DataFrame в файл Excel
df.to_excel('01.06.23\kek2.xlsx', index=False)
В результате программы будет создан файл kek2.xlsx, вот как он будет выглядеть:
UPD
Для того чтобы проверять по строке, можно присвоить переменной condition следующее значение:
condition = df['ваша ячейка'].str.contains('Итог')
Если я правильно понял вопрос, то это должно сработать:
df['Столбец'] = df['Столбец'].apply(lambda x: x if type(x) != str else None)
Это должно удалить все значения ячеек, в которых тип данных — строка.
Надеюсь я правильно понял вопрос в этот раз, вот код, который будет проверять наличие слова "Итог" в столбце "Город" и отфильтровывать датафрейм так, что там будут оставаться только те строки, где нет слова "Итог":
df['Город'] = df['Город'].apply(lambda x: x.split())
def has_itog(array):
return 'Итог' in array
df = df[~df['Город'].apply(has_itog)].copy()
df['Город'] = df['Город'].apply(lambda x: ' '.join(x))
df = df.reset_index()
На выходе будет датафрейм со строками без слова "Итог"

