首页 > 解决方案 > 枢轴/重塑熊猫数据框

问题描述

模拟 pandas 数据框以进行枢轴:

df = pd.DataFrame({'id': ['A','B','C'],
                   'year': [2012, 2014, 2016],
                   'val1': [1,2,3],
                   'val2': [5,6,7],
                   'val3': [9,10,11]})

我要旋转熊猫数据框以获得以下形状:

熊猫枢轴

从根本上说,我要做的是将年份字段作为列而不是行值,并保留标签 val1、val2、val3。

标签: pythonpandas

解决方案


试试这个,这只是一种快速而肮脏的方法。不是最好的。

#Transpose Year and other columns
df1 = df[["year", "val1", "val2", "val3"]].T 

#Set first row as header
new_header = df1.iloc[0]
df1 = df1[1:]
df1.columns = new_header
df1.reset_index(inplace=True)

#concat back with id
df = pd.concat([df[["id"]],df1],axis=1).rename(columns={"index": "value"})
df
Out[259]: 
  id value  2012  2014  2016
0  A  val1     1     2     3
1  B  val2     5     6     7
2  C  val3     9    10    11

推荐阅读