从Multi-Index Pandas DataFrame导出/写入Excel选项卡

时间:2019-01-26 16:56:47

标签: python excel list-comprehension pandas-groupby

我想按照第一个索引的每个级别将第一个索引“ 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 :(得分:1)

使用

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。然后,您可以使用预定义的Writer将此子{DataFrame编写为Excel。