如何返回pandas数据框内每个项目的每个值的频率?

时间:2018-06-01 19:06:48

标签: python python-3.x pandas

我有一个非常大的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

但是,我没有得到预期的输出。知道如何从数据框创建所需的输出吗?

1 个答案:

答案 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