熊猫-一个单元格中多个值的value_counts

时间:2018-07-02 03:10:28

标签: python pandas

我有一个数据框,该数据框的一列包含多个值,并用逗号分隔,如下所示:

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())

欢呼

3 个答案:

答案 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