Создайте файл Excel с несколькими листами с помощью Python / Pandas - PullRequest
2 голосов
/ 23 апреля 2020

У меня большой набор данных (df) (8M строк, 50 столбцов). Я пытаюсь построить для l oop, чтобы создать файл Excel, где каждый лист содержит значение value_counts () каждого из столбцов набора данных.

(т.е. на рабочем листе ('Sheet1') я пишу df.columns [0] .value_counts (), а на рабочем листе ('Sheet2') я пишу df.columns [1] .value_counts () et c et c).

Вот что я попробовал:

for i in range(3,6):   # I am using a small range to test the loop
    z = df1[df1.columns[i]].value_counts()
    z = z.to_frame().reset_index()
    title = str(i)
    with pd.ExcelWriter('Pivot part1.xlsx') as writer:  
        z.to_excel(writer, sheet_name=title)

Это продолжает перезаписывать файл, так что я получил файл Excel с одним листом, а не с файлом Excel. с 4 листами.

Я надеюсь, что мне удалось четко объяснить проблему, и я прошу прощения, если этот вопрос является дубликатом, но я не смог найти подходящий ответ или хотя бы один, который я мог бы понять.

Ответы [ 2 ]

2 голосов
/ 23 апреля 2020

Вы создаете объект записи один раз, и он все будет работать нормально.

writer = pd.ExcelWriter('Pivot part1.xlsx', engine='xlsxwriter')
for i in range(3,6):   # I am using a small range to test the loop
    z = df1[df1.columns[i]].value_counts()
    z = z.to_frame().reset_index()
    title = str(i)
    z.to_excel(writer, sheet_name=title)
writer.save()
2 голосов
/ 23 апреля 2020

Переставьте так, чтобы вы открывали объект Excel Writer только один раз:

with pd.ExcelWriter('Pivot part1.xlsx') as writer:  
    for i in range(3,6):
        z = df1[df1.columns[i]].value_counts()
        z = z.to_frame().reset_index()
        title = str(i)
        z.to_excel(writer, sheet_name=title)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...