繁体   English   中英

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

[英]Exporting /writing to Excel tabs from a Multi-Index Pandas DataFrame

我想按第一个索引“ 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 multiindex示例数据帧:

在此处输入图片说明

我想为每个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')

采用

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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM