如果我在Pandas中有一个多索引DataFrame,如果我通读了pivot和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'))发布于 2019-08-12 19:41:04
这里的函数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我认为在groupby-enhancements中隐藏了工作pivot_table nice的原因--你可以使用groupby by levels和类似的pivot_table。
https://stackoverflow.com/questions/57460506
复制相似问题