我有下面的数据帧:
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