You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确统计Pandas DataFrame中多值列内单个完整水果的出现频率?

解决水果出现频率统计的问题

嘿,我懂你遇到的麻烦了!问题出在你使用str.split()的时候没指定正确的分隔符——默认情况下这个方法会按任意空白字符拆分文本,这就把像"black currant"、"black berries"这种带空格的完整水果名给拆成了单个单词,自然统计出来的结果就不符合预期啦。

问题重现

先看你的原始DataFrame:

import pandas as pd

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'], 
} 
df = pd.DataFrame(details)

你之前的代码df['fruits'].str.split(expand=True).stack().value_counts()会把"black currant"拆成black和currant,"black berries"拆成black和berries,所以black被错误统计了2次。

正确解决方案

只需要指定拆分的分隔符为, (逗号加空格),因为你的水果列表是用这个格式分隔的:

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

输出结果

执行后会得到符合预期的统计:

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

额外优化(可选)

如果你的数据里存在格式不统一的情况(比如有的水果之间是逗号后没空格,像apples,black currant),可以用正则表达式来兼容这种情况,拆分时匹配逗号后任意数量的空格:

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

这样不管逗号后有没有空格,都能正确拆分出完整的水果名称。

内容的提问来源于stack exchange,提问作者vartholomeos007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 13:37:49