pandas value_counts()在列表表单中有多个值?

时间:2014-09-30 16:13:27

标签: python pandas dataframe

我正在尝试为数据框中的特定列执行value_count

例如:

    <Fruit>
0   'apple'
1   'apple, orange'
2   'orange'

如何将它相加以便即使它在列表中也会计算它?所以上面应该给我:

'Apple'   2
'Orange'  2

我尝试将字符串转换为列表,但不确定如何在带有值列表的字段上使用value_count。

2 个答案:

答案 0 :(得分:4)

这是一种pandonic方式

In [8]: s
Out[8]: 
0            apple
1    apple, orange
2           orange
dtype: object

通过分隔符拆分字符串,将它们转换为系列并计算它们。

In [9]: s.str.split(',\s+').apply(lambda x: Series(x).value_counts()).sum()
Out[9]: 
apple     2
orange    2
dtype: float64

答案 1 :(得分:0)

这是您的数据框:

df = p.DataFrame(['apple', 'apple, orange', 'orange'], columns= ['fruit'])

然后只需用逗号加入水果列中的所有条目,消除多余的空格,然后再次拆分以获得包含所有水果的列表。最后算一下:

>>> from collections import Counter
>>> Counter(','.join(df['fruit']).replace(' ', '').split(','))

Counter({'orange': 2, 'apple': 2})