单数据帧列python/pandas中的groupby逗号分隔值
例如,假设我有一个python数据帧,如下所示:单数据帧列python/pandas中的groupby逗号分隔值,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,例如,假设我有一个python数据帧,如下所示: # PERSON THINGS 0 Joe Candy Corn, Popsicles 1 Jane Popsicles 2 John Candy Corn, Ice Packs 3 Lefty Ice Packs, Hot Dogs THINGS PERSON Candy Corn, Ice Packs 1 Candy Corn, Popsicles 1 Ice P
# PERSON THINGS
0 Joe Candy Corn, Popsicles
1 Jane Popsicles
2 John Candy Corn, Ice Packs
3 Lefty Ice Packs, Hot Dogs
THINGS PERSON
Candy Corn, Ice Packs 1
Candy Corn, Popsicles 1
Ice Packs, Hot Dogs 1
Popsicles 1
我希望使用pandas groupby功能获得以下输出:
THINGS COUNT
Candy Corn 2
Popsicles 2
Ice Packs 2
Hot Dogs 1
我大致了解以下groupby命令:
但输出不是按单个项,而是按整个字符串。我想我理解这是为什么,但我不清楚如何最好地解决问题以获得所需的输出,而不是以下内容:
# PERSON THINGS
0 Joe Candy Corn, Popsicles
1 Jane Popsicles
2 John Candy Corn, Ice Packs
3 Lefty Ice Packs, Hot Dogs
THINGS PERSON
Candy Corn, Ice Packs 1
Candy Corn, Popsicles 1
Ice Packs, Hot Dogs 1
Popsicles 1
pandas在SQL中是否有类似的函数,或者我是否在考虑如何在pandas中做错事
感谢您的帮助。通过拆分单词创建一个系列,并使用
值\u计数
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
您需要按
,
拆分对象,并展平序列和计数值
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
“分享你所写的内容将非常有用。”HackSaw——我当然可以试试。你是指我试图解决的更大的问题,还是指代码本身,以达到提出问题的目的(或其他什么?)我是新来的,希望确保我理解这个问题(以及最好把它放在哪里)。谢谢你的评论。