我是熊猫的新手,
我有以下数据框:
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
非常感谢任何帮助,谢谢。
答案 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)