1

我有分类数据(A,B等),其中多个匹配项可以存在于同一字段中,例如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
4

3 回答 3

2

使用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() )
于 2020-09-21T20:52:27.800 回答
2

尝试使用stackaftersplitvalue_counts

df.Values.str.split(',',expand=True).stack().value_counts()
A    2
B    2
C    1
dtype: int64
于 2020-09-21T21:22:30.317 回答
1

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

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

A    2
B    2
C    1
dtype: int64
于 2020-09-21T21:54:52.733 回答