将特定索引变成自己的行

时间:2019-09-16 22:06:59

标签: python pandas dataframe pivot melt

  

试图将一列的索引转换为自己的列。

From:

[country, series, year, value]

[USA, A, 1994, 700000]
[USA, B, 1994, 701231]
[UK, A, 1994, 600000]
[UK, B, 1994, 601231]
[China, A, 1994, 6512312]
[China, B, 1994, 6432112]
To:

[country, A, B, year]

[USA, 700000, 701231, 1994]
[UK, 600000, 601231, 1994]
[China, 6512312, 6432112, 1994]
  

尝试了堆叠/拆堆,旋转,熔化,分组方式等。

     
    

我相当确定这些方法之一是 进行重组的关键,我似乎无法正确地做到这一点。

         
      

最终目标是制作一个3d散点图,其中一个轴是年份,另一个轴是A,另一个轴是B;而国家/地区将以颜色显示

    
  

更新:使用Pivot,我能够以正确的方式将数据获取到 Look ,但是当我尝试绘制数据时也会出现相同的问题。

  

由于已对“年”和“国家”进行了索引,因此无法将它们标识为适合轴的元素。

     
    

预期为“ A”或“ B”,但为“年” /“国家”

  

1 个答案:

答案 0 :(得分:0)

  

透视数据,然后重设索引,并删除作为新索引列使用的结果附加列。

df.pivot_table(index=['country', 'year'], columns='series', values='value')
df.reset_index()

(optional) df.drop(column = 'series')

按照@ALollz所述进行透视可以使数据框看起来正确。

由于要对“年”和“国家”进行索引,因此在尝试对其进行图形绘制时遇到了上述错误。

运行枢轴后,只需重置索引之后,解决了索引问题,并将“国家/地区”和“年份”返回到常规列,同时将A和B保留为新列。 “系列”将是新的索引列,可以将其删除。