假设我的数据框看起来像这样:
column_name
1 book
2 fish
3 icecream|book
4 fish
5 campfire|book
现在,如果我使用df [‘column_name’].value_counts(),它会告诉我鱼是最常见的值.
但是,我希望将书归还,因为第1,3和5行包含“book”一词.
我知道.value_counts()将icecream | book识别为一个值,但有一种方法可以通过计算每个列单元格包含某个值的次数来确定最常用的值,这样“book”将是最常见的值?
解决方法:
a = df['column_name'].str.split('|', expand=True).stack().value_counts()
print (a)
book 3
fish 2
icecream 1
campfire 1
dtype: int64
或者具有扁平化列表理解的计数器:
from collections import Counter
a = pd.Series(Counter([y for x in df['column_name'] for y in x.split('|')]))
print (a)
book 3
fish 2
icecream 1
campfire 1
dtype: int64