统计具有多个模式的pandas数据帧列中的模式频率



我有下面的数据帧:


details = {
'container_id' : [1, 2, 3, 4, 5, 6 ],
'container' : ['black box', 'orange box', 'blue box', 'black box','blue box', 'white box'],
'fruits' : ['apples, black currant', 'oranges','peaches, oranges', 'apples','apples, peaches, oranges', 'black berries, peaches, oranges, apples'],
}

# creating a Dataframe object 
df = pd.DataFrame(details)

我想在清单上分别列出每种水果的频率。

我试过这个代码

df['fruits'].str.split(expand=True).stack().value_counts()

但我得到了2次黑加仑计数,而不是1次黑加仑和1次黑浆果。

您可以像以前一样执行此操作,但需要指定分隔符。请注意,在分割数据时,除非分隔符是带空格的逗号,否则会得到一些前导空格。要确定,只需使用str.strip的另一个步骤。

df['fruits'].str.split(',', expand=False).explode().str.strip().value_counts()

df['fruits'].str.split(', ', expand=True).stack().value_counts()

输出:

apples           4
oranges          4
peaches          3
black currant    1
black berries    1
Name: fruits, dtype: int64

指定逗号分隔符,后跟可选空格:

df['fruits'].str.split(',s?', expand=True).stack().value_counts()

输出:

apples           4
oranges          4
peaches          3
black currant    1
black berries    1
dtype: int64

最新更新