我有一个数据框,该数据框的一列包含多个值,并用逗号分隔,如下所示:
Country
Australia, Cuba, Argentina
Australia
United States, Canada, United Kingdom, Argentina
我想对每个唯一值进行计数,类似于value_counts,如下所示:
Australia: 2
Cuba: 1
Argentina: 2
United States: 1
最简单的方法如下所示,但我怀疑这样做可以更有效,更整洁。
from collections import Counter
Counter(pd.DataFrame(data['Country'].str.split(',', expand=True)).values.ravel())
欢呼
答案 0 :(得分:3)
您可以使用get_dummies
df.Country.str.get_dummies(sep=', ').sum()
Out[354]:
Argentina 2
Australia 2
Canada 1
Cuba 1
United Kingdom 1
United States 1
dtype: int64
答案 1 :(得分:1)
另一个选择是先split
,然后再使用value_counts
pd.Series(df.Country.str.split(', ').sum()).value_counts()
Argentina 2
Australia 2
United Kingdom 1
Canada 1
Cuba 1
United States 1
dtype: int64
答案 2 :(得分:0)
我认为,这是熊猫版本> = 0.25.0的最有效方法。因为:as
函数在熊猫0.25.0发布后才有效。
explode