我有一个非常大的pandas数据框,如下所示:
id fruit
---|------
101 apple
102 apple
101 watermelon
101 orange
102 orange
104 lemon
105 lemon
104 lemon
105 apple
103 grapes
如何创建计数数据框,其中每个id表示列中水果的频率,如下所示:
apple watermelon orange lemon grapes
101 1 1 1 0 0
102 2 0 1 0 0
103 0 0 0 0 1
104 0 0 0 0 2
105 1 0 0 0 0
我试图:
new_df = df.groupby(['id','fruit']).count()
new_df
和
new_df = df[['id','fruit']].groupby(['id','fruit']).count()
new_df
和
new_df = df[['id','fruit']].groupby(df['fruit'].tolist()).count()
new_df
但是,我没有得到预期的输出。知道如何从数据框创建所需的输出吗?
答案 0 :(得分:2)
使用:.crosstab()
pd.crosstab(df.id,df.fruit)
Out[251]:
fruit apple grapes lemon orange watermelon
id
101 1 0 0 1 1
102 1 0 0 1 0
103 0 1 0 0 0
104 0 0 2 0 0
105 1 0 1 0 0