Python Pandas Pivot与Pivot_table

时间:2019-08-12 11:39:21

标签: python pandas dataframe pivot pivot-table

如果我在Pandas中有一个多索引DataFrame,那么如果我通读了pivot_tablepivot的文档,我似乎找不到pivot在此示例中不起作用的原因。显然我遗漏了一些东西,但是它采用了相同的参数,似乎暗示它会起作用。我在这里想念什么?为什么pivot_table会引发错误,但是# standard imports import pandas as pd # create a random multiindex dataframe outside = ['G1','G1','G1','G2','G2','G2'] inside = [1,2,3,1,2,3] hier_index = list(zip(outside,inside)) hier_index = pd.MultiIndex.from_tuples(hier_index) df = pd.DataFrame(np.random.randn(6,1),index=hier_index,columns=['A']) df.index.names = ['Group', 'Num'] # show the original dataframe print(df) # successfully pivots the dataframe as requested print(df.pivot_table(index='Group', columns='Num', values='A')) # causes a KeyError on 'Group' - not understanding why print(df.pivot(index='Group', columns='Num', values='A')) 却能正常工作。谢谢。

{{1}}

1 个答案:

答案 0 :(得分:0)

这里的功能pivotMultiIndex不兼容,解决方案是DataFrame.reset_index,用于将级别转换为列:

print(df.reset_index().pivot(index='Group', columns='Num', values='A'))
Num           1         2         3
Group                              
G1    -0.121167 -2.008585 -0.920647
G2     0.168234 -1.319892  1.266429

我认为工作pivot_table很好的原因隐藏在groupby-enhancements中-您可以按级别和类似的groupby使用pivot_table