Python 带额外立柱的大熊猫枢轴

Python 带额外立柱的大熊猫枢轴,python,pandas,Python,Pandas,我有一个简单的问题,关于如何在有额外列的情况下透视Pandas数据帧 数据集如下所示: X = pd.DataFrame({'country':['Peru','Peru','Japan','Japan'],'method':['m1','m2','m1','m2'], 'value':[1,2,3,4]}) Country | Method | Value Peru | m1 | 1 Peru | m2 | 2

我有一个简单的问题,关于如何在有额外列的情况下透视Pandas数据帧

数据集如下所示:

X = pd.DataFrame({'country':['Peru','Peru','Japan','Japan'],'method':['m1','m2','m1','m2'], 'value':[1,2,3,4]})

Country   |   Method    |   Value
Peru      |   m1        |   1
Peru      |   m2        |   2
Japan     |   m1        |   3
Japan     |   m2        |   4
所有“国家”对所有“方法”都有价值 我想将每个国家作为一列来分析这个数据框架,但我需要继续使用以下方法:

Peru |  Japan | Method
1    |  3     | m1
2    |  4     | m4

谢谢你的帮助

您需要将
.pivot
应用到
X
中,然后再应用
.reset\u index

我还删除了用于cleaner输出的列的名称

df = X.pivot(index='method',columns='country',values='value').reset_index() 
df.columns.name = ''
print(df)
输出:

  method  Japan  Peru
0     m1      3     1
1     m2      4     2
具有和的解决方案:


但是如果获取错误(因为成对重复
方法
国家
列):

ValueError:索引包含重复的条目,无法重塑

groupby
和一些聚合函数如
mean
sum
,…)求解

X.pivot('Method','Country','Value')
?但是为什么要使用
m4
print (X.set_index(['method','country'])['value']
        .unstack(fill_value=0)
        .rename_axis(None, axis=1)
        .reset_index())

  method  Japan  Peru
0     m1      3     1
1     m2      4     2
X = pd.DataFrame({'country':['Peru','Peru','Peru','Japan'],
                  'method':['m1','m2','m1','m2'], 
                  'value':[1,2,3,4]})
print (X)
  country method  value
0    Peru     m1      1
1    Peru     m2      2
2    Peru     m1      3 <-duplicates Peru, m1
3   Japan     m2      4

print (X.groupby(['method','country'])['value'].mean()
        .unstack(fill_value=0)
        .rename_axis(None, axis=1)
        .reset_index())

  method  Japan  Peru
0     m1      0     2
1     m2      4     2
print (X.pivot_table(index='method', 
                     columns='country', 
                     values='value', 
                     fill_value=0, 
                     aggfunc=np.mean).
                     rename_axis(None, axis=1).
                     reset_index())

  method  Japan  Peru
0     m1      0     2
1     m2      4     2