我在熊猫中有以下数据框。想法是根据变量TYPE的比例生成一个附加的数据帧ID,并将其转换为列。任何帮助表示赞赏!
d = {'ID': [1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2], 'TYPE': ['A','A','A','B','B','B','B','C','C','C','A','A','B','B','B','B','B','B']}
df = pd.DataFrame(data=d)
df
ID A B C
1 0.30 0.40 0.3
2 0.25 0.75 0.0
答案 0 :(得分:1)
将SeriesGroupBy.value_counts
与参数normalize=True
一起使用,并通过Series.unstack
重塑形状:
df = df.groupby('ID')['TYPE'].value_counts(normalize=True).unstack(fill_value=0)
print (df)
TYPE A B C
ID
1 0.30 0.40 0.3
2 0.25 0.75 0.0
然后根据需要在index
中添加列:
df = df.rename_axis(None, axis=1).reset_index()
print (df)
ID A B C
0 1 0.30 0.40 0.3
1 2 0.25 0.75 0.0