сгруппированные через запятую значения в одном столбце DataFrame python / pandas - PullRequest
0 голосов
/ 28 июня 2018

В качестве примера, скажем, у меня есть DataFrame Python pandas, который выглядит следующим образом:

#  PERSON  THINGS
0  Joe     Candy Corn, Popsicles
1  Jane    Popsicles
2  John    Candy Corn, Ice Packs
3  Lefty   Ice Packs, Hot Dogs

Я хотел бы использовать функциональность панд groupby , чтобы получить следующий вывод:

THINGS        COUNT
Candy Corn    2
Popsicles     2
Ice Packs     2
Hot Dogs      1

Я обычно понимаю следующую команду groupby :

df.groupby(['THINGS']).count()

Но вывод не по отдельному элементу, а по всей строке. Я думаю, что понимаю, почему это так, но мне не ясно, как лучше всего подойти к проблеме, чтобы получить желаемый результат вместо следующего:

THINGS                  PERSON
Candy Corn, Ice Packs   1
Candy Corn, Popsicles   1
Ice Packs, Hot Dogs     1
Popsicles               1

Есть ли у панд функция, подобная LIKE в SQL, или я думаю о том, как сделать это неправильно в пандах?

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Вам нужно разделить THINGS на , и сгладить значения серии и числа.

pd.Series([item.strip() for sublist in df['THINGS'].str.split(',') for item in sublist]).value_counts()

Выход:

Candy Corn    2
Popsicles     2
Ice Packs     2
Hot Dogs      1
dtype: int64
0 голосов
/ 28 июня 2018

Создайте серию, разделив слова, и используйте value_counts

In [292]: pd.Series(df.THINGS.str.cat(sep=', ').split(', ')).value_counts()
Out[292]:
Popsicles     2
Ice Packs     2
Candy Corn    2
Hot Dogs      1
dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...