как сгруппировать по двум столбцам и подсчету слов последние столбцы в пандах (или питоне) - PullRequest
0 голосов
/ 01 декабря 2018

1) Например, у меня есть 3 столбца, как показано ниже

 date      categories     contents  
 2018-01   fish_tank1     Goldfish Gombessa Goosefish Gopher rockfish   
 2018-01   fish_tank2     Grass carp Goosefish Grayling mullet shark  
 2018-02   fish_tank2     Goosefish Gopher rockfish Grayling mullet shark  
 2018-01   fish_tank1     carp Goosefish Grayling Goldfish Gombessa   
 2018-02   fish_tank2     carp Goosefish Grayling Grass carp Goosefish  
 2018-03   fish_tank3     Grass carp Goosefish Grayling mullet shark  
 2018-03   fish_tank2     Goosefish Gopher rockfish Goosefish Grayling  

2) Я бы хотел сделать df.groupby(['date','categories']).agg(df.contents.str.split(expand=True).stack().value_counts(), чтобы получить аналогичные приведенные ниже результаты.но я не могу понять это в последние несколько дней.

    date   categories       contents  
 2018-01   fish_tank1  2    Goldfish    2   
                            Gombessa    2   
                            Goosefish   2    
                            Gopher      1   
                            rockfish    1   
                            ......   
           fish_tank2      Grass    1   
                           carp     1   
                           .....  
 2018-02   fish_tank2     Goosefish    3  
                          Grayling     2  
                          Gopher       1  
                          ........    
........................  

3) Может ли кто-нибудь дать мне понимание, чтобы получить результат, который я хотел бы сделать?

1 Ответ

0 голосов
/ 01 декабря 2018

Использование -

from collections import Counter
df['contents2'] = df['contents'].str.split()
df.groupby(['date', 'categories'])['contents2'].apply(lambda x: Counter(x.sum()))

Выход

date     categories           
2018-01  fish_tank1  Goldfish     2.0
                     Gombessa     2.0
                     Goosefish    2.0
                     Gopher       1.0
                     Grayling     1.0
                     carp         1.0
                     rockfish     1.0
         fish_tank2  Goosefish    1.0
                     Grass        1.0
                     Grayling     1.0
                     carp         1.0
                     mullet       1.0
                     shark        1.0
2018-02  fish_tank2  Goosefish    3.0
                     Gopher       1.0
                     Grass        1.0
                     Grayling     2.0
                     carp         2.0
                     mullet       1.0
                     rockfish     1.0
                     shark        1.0
2018-03  fish_tank2  Goosefish    2.0
                     Gopher       1.0
                     Grayling     1.0
                     rockfish     1.0
         fish_tank3  Goosefish    1.0
                     Grass        1.0
                     Grayling     1.0
                     carp         1.0
                     mullet       1.0
                     shark        1.0
Name: contents2, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...