Pandas value_counts() 在同一行中有多个匹配项
Pandas value_counts() with multiple matches in same row
我有分类数据(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
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() )
在 split
和 value_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
我有分类数据(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
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() )
在 split
和 value_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