Как вернуть частоту каждого значения для каждого элемента внутри кадра данных панд? - PullRequest
0 голосов
/ 01 июня 2018

У меня очень большой фрейм данных панд, например, такой:

id   fruit
---|------
101  apple
102  apple
101  watermelon
101  orange
102  orange
104  lemon
105  lemon
104  lemon
105  apple
103  grapes

Как мне создать фрейм данных подсчета, где каждый идентификатор представляет частоту плодов по столбцам, что-то вроде этого:

     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 голосов
/ 01 июня 2018

Использование: .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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...