Python pivot vs pivot\u选项卡

2024-05-13 14:16:40 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我在Pandas中有一个多索引数据帧,如果我仔细阅读pivotpivot_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'))

Tags: columnsdataframedfindexastablegrouprandom
1条回答
网友
1楼 · 发布于 2024-05-13 14:16:40

这里函数pivot不使用MultiIndex,解决方案是^{}将级别转换为列:

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好的原因隐藏在^{}中—您可以按级别和类似的pivot_table使用groupby。你知道吗

相关问题 更多 >