Pandas value_counts() 在同一行中有多个匹配项

Pandas value_counts() with multiple matches in same row

我有分类数据(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 and then 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() )

splitvalue_counts

之后尝试使用 stack
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