在同一行中具有多个匹配项的Pandas value_counts

问题描述

我拥有分类数据(AB等),其中同一字段(例如A,B)中可以存在多个匹配项。我想将我的数据分成其他行,只是为了计算每个值的实例数。

df = pd.DataFrame({"Values" : ["A","B","C","A,B"]})
df
    Values
0   A
1   B
2   C
3   A,B

当前:

df["Values"].value_counts()
B       1
A,B     1
A       1
C       1
Name: Values,dtype: int64

我理想的功能将像这样工作:

df["Values"].value_counts(split = ",")
A    2
B    2
C    1
Name: Values,dtype: int64

解决方法

先使用Series.str.split,然后再使用explode()

print( df['Values'].str.split(',').explode().value_counts() )

打印:

A    2
B    2
C    1
Name: Values,dtype: int64

编辑:

df = pd.DataFrame({"Values" : ["A","B","C","A,B"]})
print( df['Values'].str.split(',').explode().value_counts() )
,

stacksplit之后尝试value_counts

df.Values.str.split(',',expand=True).stack().value_counts()
A    2
B    2
C    1
dtype: int64
,

如果您不必担心在同一行Series.str.get_dummies + sum上计算重复值

df['Values'].str.get_dummies(',').sum()

A    2
B    2
C    1
dtype: int64