Короткий ответ
Сохранение делается через df.to_csv('file.csv', index=False, encoding='utf-8'), где index=False убирает лишний столбец индекса, а encoding важен для корректного отображения не-латинских символов в других программах.
Как это работает подробнее
to_csv() по умолчанию записывает индекс DataFrame как первый столбец файла; если индекс не содержит содержательной информации (обычный диапазон 0,1,2...), этот столбец становится лишним "Unnamed: 0" при повторном чтении файла.
Пример кода
question-118.py
import pandas as pd
df = pd.DataFrame({'category': ['A', 'B'], 'total': [100, 200]})
df.to_csv('report.csv', index=False, encoding='utf-8-sig')
check = pd.read_csv('report.csv')
print(check.columns.tolist())Что использовать на практике
- Практика. для файлов, которые будут открываться в Excel на компьютерах с кириллицей, иногда полезно указать encoding='utf-8-sig', чтобы Excel корректно распознал кодировку; также стоит явно задать sep, если в данных встречаются запятые внутри текстовых полей, которые могут конфликтовать со стандартным разделителем CSV.
- Проверка. при повторном чтении файла список столбцов должен быть ['category', 'total'] без добавленного 'Unnamed: 0'.
Подводные камни
- Частая ошибка. забывают index=False и затем удивляются лишнему безымянному столбцу при повторном чтении файла; не проверяют после сохранения, что числа с разделителем-запятой в локали не превратились в проблему при открытии в Excel с другими региональными настройками.