Pandas Groupby с использованием столбца значений списка - PullRequest
1 голос
/ 03 октября 2019

С учетом DataFrame pandas со столбцом, содержащим значения list:

Month   Col2
01      ['a', 'b']
01      ['b']
01      ['a', 'c']
02      ['b', 'c']

Как выполнить groupby на основе элементов списка в столбце?

В результате .groupby(['Month', 'Col2']).size() будет выдано:

Month    Col2   size 
01       'a'    2
01       'b'    2
01       'c'    1
02       'b'    1
02       'c'    1

Примечание: значения Col2 были "распакованы" для группировки ...

Заранее спасибо заВаше внимание и ответ.

Ответы [ 3 ]

4 голосов
/ 03 октября 2019

Мы можем использовать explode после pandas 0.25.0

df.explode('Col2').groupby(['Month','Col2']).size()
1 голос
/ 03 октября 2019

Другой немного более многословный способ (для людей с <0.25.0 пандами, такими как я), вы можете сделать это распаковать ваш столбец списка с помощью df.itertuples () и затем groupby: </p>

data = [[i[1], col2] for i in df.itertuples() for col2 in i[2]]
df_data = pd.DataFrame(data = data, columns = df.columns).groupby(['Month', 'Col2']).size().reset_index(name='size')
print(df_data)

вывод:

  Month Col2  size
0    01    a     2
1    01    b     2
2    01    c     1
3    02    b     1
4    02    c     1
1 голос
/ 03 октября 2019

использование:

df.explode('Col2').groupby(['Month','Col2']).size().reset_index(name='size')


  Month Col2   size
0    01    a      2
1    01    b      2
2    01    c      1
3    02    b      1
4    02    c      1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...