Почему изменения данных в строке CSV файла не отображаются при использовании Pandas?

  • 21 августа 2023 г. 11:36
Ответы на вопрос 2
Изменения данных в строке CSV файла не отображаются при использовании Pandas, потому что при использовании выражения `df.loc[name, fields_to_change] = data_to_update`, Pandas рассматривает `name` как индекс строки, а не как значение в столбце "Имя". Поэтому изменения применяются только к выбранным полям.

Чтобы заменить всю строку, необходимо использовать выражение `df.loc[df['Имя'] == name, fields_to_change] = data_to_update`. Это выражение найдет строки, в которых значение в столбце "Имя" равно заданному имени, и заменит значения только в указанных столбцах на новые значения из словаря `data_to_update`.

В исправленном коде используется это выражение, и после выполнения замены данных в dataframe, его содержимое сохраняется обратно в CSV файл.
Если мы ставим индексом столбец "Имя" и его же меняем, то можно обойти эту проблему, оставив все как есть и добавив параметр df = pd.read_csv('directory2.csv').set_index('Имя', drop=False).rename_axis('_Имя', axis=0). Таким образом мы сохраняем столбец "Имя" в таблице, а меняем имя у индекса, чтобы он отличался от имени колонки. При записи в файл необходимо исключить индекс с помощью параметра index=False: df.to_csv('directory2.csv', index=False).

Таким образом, приобретенный результат будет рабочим, как вы хотели. Однако, рекомендуется обдумать создание уникального столбца, который будет использоваться в качестве индекса. Также следует быть внимательным при разборе ввода: если вы указываете имена столбцов, убедитесь, что они действительно существуют. Можно добавить защитный код для проверки регистра символов, лишних пробелов и существования указанных пользователем столбцов. Все имена столбцов находятся в df.columns.
Похожие вопросы