Экспорт / запись на вкладки Excel из мультииндексного Pandas DataFrame - PullRequest
0 голосов
/ 26 января 2019

Я хотел бы разделить / нарезать мультииндексный фрейм данных по первому индексу '0' на фрейм данных для каждого уровня первого индекса (например, ниже будет 4 фрейма данных). Затем я хотел бы экспортировать каждый фрейм данных в отдельную вкладку в EXCEL. Самая важная проблема, над которой мне нужна помощь, - это как написать цикл или списки, которые бы разбили мультииндексный фрейм данных на отдельные фреймы данных.

Пример кадра данных:

import pandas as pd
import numpy as np


arrays = [
    np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux']),
    np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'])
]
index = pd.MultiIndex.from_tuples(list(zip(*arrays)), names=['IDX1', 'IDX2'])
df = pd.DataFrame(np.random.randn(3, 8), index=['A', 'B', 'C'], columns=index)
df2 = df.T

Результирующий мультифексный пример кадра данных df2:

enter image description here

Я хотел бы создать фрейм данных для каждого уровня IDX1 и экспортировать каждый 1 в отдельную вкладку.

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('pandas_multiple.xlsx', engine='xlsxwriter')

# Write each dataframe to a different worksheet.
df1.to_excel(writer, sheet_name='bar')
df2.to_excel(writer, sheet_name='baz')
df3.to_excel(writer, sheet_name='foo')
df4.to_excel(writer,sheet_name = 'qux')

1 Ответ

0 голосов
/ 26 января 2019

Используйте

for idx in df2.index.get_level_values('IDX1').unique():
    temp = df2.loc[idx]
    temp.to_excel(writer, sheet_name=idx)

Переберите все уникальные значения индекса с помощью get_level_values, затем используйте .loc, чтобы выбрать суб- DataFrame.Затем вы можете написать эту под- DataFrame, чтобы преуспеть, используя свой предопределенный Writer.

...