使用writer.save()将Pandas Data Frame加载到Excel中并获取索引错误

时间:2016-07-22 18:59:10

标签: excel pandas

我正在使用numpy大小聚合Pandas DF,然后想要使用writer.save将结果加载到Excel中。但是我收到以下错误: NotImplementedError:使用MultiIndex写入Excel尚未实现。

我的数据看起来像这样:

agt_id     unique_id
abc123     ab12345
abc123     cd23456
abc123     de34567
xyz987     ef45678
xyz987     fg56789

我的结果应该如下:

agt_id     unique_id
abc123     3
xyz987     2

这是我的代码示例:

df_agtvol = df_agt.groupby('agt_id').agg({'unique_id':[np.size]})
writer = pd.ExcelWriter(outfilepath, engine='xlsxwriter') 
df_agtvol.to_excel(writer, sheet_name='agt_vols')

我尝试使用以下方法重置索引:

df_agt_vol_final = df_agtvol.set_index([df_agtvol.index, 'agt_id'], inplace=True)

基于一些研究,但我得到一个完全不同的错误。

我对使用Pandas数据帧相对较新,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

您不需要MultiIndex。你得到一个原因是因为np.size被包装在一个列表中。

虽然不是explicitly documented,但Pandas会将列表中的所有内容解释为'unique_id'的子索引。此用例属于链接文档中“名称的嵌套字典 - >函数的dicts”案例。

所以

df_agtvol = df_agt.groupby('agt_id').agg({'unique_id':[np.size]})

应该是

df_agtvol = df_agt.groupby('agt_id').agg({'unique_id': np.size})

这仍然过于复杂,您可以通过调用count方法获得相同的结果。

df_agtvol = df_agt.groupby('agt_id').count()