我正在尝试为数据框中的特定列执行value_count
例如:
<Fruit>
0 'apple'
1 'apple, orange'
2 'orange'
如何将它相加以便即使它在列表中也会计算它?所以上面应该给我:
'Apple' 2
'Orange' 2
我尝试将字符串转换为列表,但不确定如何在带有值列表的字段上使用value_count。
答案 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})