问题描述
我拥有分类数据(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
解决方法
先使用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() )
,
在stack
和split
之后尝试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