Pandas:根据ID将列转换为行

时间:2017-06-22 10:21:23

标签: python pandas

我是熊猫的新手,

我有以下数据框:

df = pd.DataFrame([[1, 'name', 'peter'], [1, 'age', 23], [1, 'height', '185cm']], columns=['id', 'column','value'])

    id  column  value
0   1   name    peter
1   1   age     23
2   1   height  185cm

我需要为每个ID创建一行。像这样:

   id  name   age  height
0  1   peter  23   185cm

非常感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:3)

您可以将pivot_table与汇总join

一起使用
df = pd.DataFrame([[1, 'name', 'peter'], 
                   [1, 'age', 23], 
                   [1, 'height', '185cm'],
                   [1, 'age', 25]], columns=['id', 'column','value'])
print (df)
   id  column  value
0   1    name  peter
1   1     age     23
2   1  height  185cm
3   1     age     25

df1 = df.astype(str).pivot_table(index="id",columns="column",values="value",aggfunc=','.join)
print (df1)
    column    age height   name
id                         
1       23,25  185cm  peter

groupby + apply加入和unstack的另一种解决方案:

df1 = df.astype(str).groupby(["id","column"])["value"].apply(','.join).unstack(fill_value=0)
print (df1)
column    age height   name
id                         
1       23,25  185cm  peter

答案 1 :(得分:0)

假设您的数据框为" df",以下行有助于:

df.pivot(指数=&#34受试者#34;,柱="谓词",值="对象&#34)