如果我在Pandas中有一个多索引DataFrame,那么如果我通读了pivot_table
和pivot
的文档,我似乎找不到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}}
答案 0 :(得分:0)
这里的功能pivot
与MultiIndex
不兼容,解决方案是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
。