Как экспортировать фрейм данных Pandas в Excel
Часто вас может заинтересовать экспорт фрейма данных pandas в Excel. К счастью, это легко сделать с помощью функции pandas to_excel() .
Чтобы использовать эту функцию, вам нужно сначала установить openpyxl , чтобы вы могли записывать файлы в Excel:
pip install openpyxl
В этом руководстве будет объяснено несколько примеров использования этой функции со следующим фреймом данных:
import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame df points assists rebounds 0 25 5 11 1 12 7 8 2 15 7 10 3 14 9 6 4 19 12 6
Пример 1: базовый экспорт
В следующем коде показано, как экспортировать DataFrame по определенному пути к файлу и сохранить его как mydata.xlsx :
df.to_excel (r'C:\Users\Zach\Desktop\mydata.xlsx')
Вот как выглядит фактический файл Excel:

Пример 2: Экспорт без индекса
В следующем коде показано, как экспортировать DataFrame в определенный путь к файлу и удалить столбец индекса:
df.to_excel (r'C:\Users\Zach\Desktop\mydata.xlsx', index= False )
Вот как выглядит фактический файл Excel:

Пример 3: Экспорт без индекса и заголовка
В следующем коде показано, как экспортировать DataFrame в определенный путь к файлу и удалить столбец индекса и строку заголовка:
df.to_excel (r'C:\Users\Zach\Desktop\mydata.xlsx', index= False, header= False )
Вот как выглядит фактический файл Excel:

Пример 4: Экспорт и имя листа
В следующем коде показано, как экспортировать DataFrame в определенный путь к файлу и назвать рабочий лист Excel:
df.to_excel (r'C:\Users\Zach\Desktop\mydata.xlsx', sheet_name='this_data')
Вот как выглядит фактический файл Excel:

Полную документацию по функции to_excel() можно найти здесь .
Запись DataFrame Pandas в лист Excel
Вы можете сохранить или записать DataFrame в файл Excel или конкретный лист в файле Excel, используя метод pandas.DataFrame.to_excel() класса DataFrame.
В этом руководстве мы узнаем, как записать DataFrame Pandas в файл Excel с помощью примеров программ Python.
Необходимым условием для работы с функциями файлов Excel в pandas является установка модуля openpyxl. Чтобы установить openpyxl с помощью pip, выполните следующую команду.
pip install openpyxl
Пример 1
- Подготовьте свой DataFrame. В этом примере мы инициализируем DataFrame с несколькими строками и столбцами.
- Создайте модуль записи Excel с именем выходного файла Excel, в который вы хотите записать наш DataFrame.
- Вызов функции to_excel() в DataFrame с помощью модуля записи Excel, переданного в качестве аргумента.
- Сохраните файл Excel, используя метод save() Excel Writer.
import pandas as pd # create dataframe df_marks = pd.DataFrame() # create excel writer object writer = pd.ExcelWriter('output.xlsx') # write dataframe to excel df_marks.to_excel(writer) # save the excel writer.save() print('DataFrame is written successfully to Excel File.')
Запустите указанную выше программу, и файл Excel будет создан с именем, указанным при создании модуля записи Excel.

Откройте файл Excel, и вы увидите индекс, метки столбцов и данные строк, записанные в файл.

Пример 2: запись на конкретный лист Excel
- Подготовьте свой DataFrame.
- Создайте модуль записи Excel с именем желаемого выходного файла Excel.
- Вызовите функцию to_excel() в DataFrame с записывающим устройством и именем листа Excel, переданными в качестве аргументов.
- Сохраните файл Excel, используя метод save() Excel Writer.
import pandas as pd # create dataframe df_marks = pd.DataFrame() # create excel writer writer = pd.ExcelWriter('output.xlsx') # write dataframe to excel sheet named 'marks' df_marks.to_excel(writer, 'marks') # save the excel file writer.save() print('DataFrame is written successfully to Excel Sheet.')

Откройте файл Excel. Обратите внимание на название листа Excel. Он назван в честь строки, которую мы указали в качестве второго аргумента функции to_excel().

В этом руководстве по Pandas мы узнали, как написать Pandas DataFrame в лист Excel с помощью примеров программ Python.
Как сохранить файл в excel с помощью pandas?

У меня есть DataFrame вида:
Я хочу сохранить данные в excel добавляя еще одно поле (Флаг), которое не нужно заполнять. Пробую сделать таким способом:
data.to_excel('file.xlsx', columns=['Имя', 'Фамилия'], headers=['Имя', 'Фамилия', 'Флаг'] )
Текст ошибки говорит, что количество columns должно соответствовать количеству headers.
Как это можно иначе сделать?
- Вопрос задан более трёх лет назад
- 733 просмотра
Комментировать
Решения вопроса 1

python developer
Нужно юзать xlsxwriter, приблизительно вот так:
import xlsxwriter
. вся канитель .
writer = pd.ExcelWriter(filename, engine=’xlsxwriter’) # используем XlsxWriter как движек экспорта
df.to_excel(writer, sheet_name=’Sheet1′, index=False) # Convert the dataframe to an XlsxWriter Excel object.
workbook = writer.book # Get the xlsxwriter objects from the dataframe writer object.
worksheet = writer.sheets[‘Sheet1’] # получили наш лист
# дальше можно корячить лист как угодно (см. доки по ExcelWriter)
worksheet.write(‘C1’, ‘Флаг’)
writer.save() # Close the Pandas Excel writer and output the Excel file.
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Ответы на вопрос 1
Вы собственноручно вписали в столбцы 2 столбца, а в заголовки 3 заголовка, чего вы ожидаете?)
Сделайте предварительно пустой столбец Флаг и сохраняй его.
Ответ написан более трёх лет назад
Илья @illaaa Автор вопроса
В оригинальной задаче мне нужно добавить 5-6 столбцов. Нет ли какого-то более аккуратного способа?
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Python
Почему не проходит код для решения задачи на leetcode?
- 1 подписчик
- только что
- 1 просмотр

- Python
- +1 ещё
Почему текстовый редактор и консоль по-разному присваивают ссылки на переменные Python?
- 1 подписчик
- 21 минуту назад
- 8 просмотров
Python.Pandas. Как записать в excel
Как записать все данные из цикла? А то при использовании met_skv_3.to_excel(‘metki1.xlsx’,sheet_name=’er’) в файл записываются последние элементы цикла: 
Отслеживать
149k 12 12 золотых знаков 59 59 серебряных знаков 132 132 бронзовых знака
задан 19 окт 2016 в 8:55
Рамиль Фазлиахметов Рамиль Фазлиахметов
25 1 1 золотой знак 1 1 серебряный знак 6 6 бронзовых знаков
по-моему проще будет объединить все DataFrame’s в один и записать этот объединённый DF в Excel
19 окт 2016 в 9:50
Еще я бы не перечитывал Excel в цыкле — можно просто выбирать нужный диапазон столбцов из tab DF. Если выложите куда-нибудь свой Excel файл я мог бы набросать рабочий вариант.
19 окт 2016 в 9:58
@MaxU dropmefiles.com/KJfVT вот файл.
19 окт 2016 в 10:13
@MaxU дело в том, что задача стоит так, что данных диапазонов может быть и не 19 штук, как у меня, а может и больше. Кроме как цикла не имею понятия как делать, и желательно чтобы данные каждого из диапазонов выводились также, как и в исходном файле
19 окт 2016 в 11:11
Результат вы хотите записать в вертикальном виде (т.е. блоки по пять столбцов один под другим) — я вас правильно понимаю?
19 окт 2016 в 11:50
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Вот рабочий вариант, который читает Excel файл только один раз:
import pandas as pd fn = r'C:\Temp\.data\primer.xlsx' cols = ['label','x','y','z','value'] df = pd.read_excel(fn, skiprows=4, header=None, parse_cols='C:XFD') dfs = [] for i in range(df.columns.size//5): lbl_col = 5*i x = df.ix[(df[lbl_col] != 0) & (df[lbl_col] != 9999), lbl_col:lbl_col+4] #x.columns = pd.MultiIndex.from_tuples(list(product([i+1], cols))) x.columns = cols dfs.append(x.reset_index(drop=True)) result = pd.concat(dfs, axis=1) #result.to_excel('c:/temp/result.xlsx', startrow=3, index=True) result.to_excel('c:/temp/result.xlsx', startrow=3, index=False)

PS я хотел добавить номера пяти-столбцовых блоков (как в вашем исходном файле: 1-19), т.е. создать multilevel columns :
x.columns = pd.MultiIndex.from_tuples(list(product([i+1], cols)))
но это пока не имплементировано:
NotImplementedError: Writing to Excel with MultiIndex columns and no index ('index'=False) is not yet implemented.
Т.е. надо выбирать — либо многоуровневые (красивые) имена столбцов и ненужный индекс, либо нет индекса и одноуровневые имена столбцов.
PPS если нужна «шапка», то сделать это можно подобным образом
