我想按照第一个索引的每个级别将第一个索引“ 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多索引示例数据框:
我想为每个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')
答案 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。