预期的逻辑不明确,但我想大家可能希望:
df[ count ] = df.apply(lambda s: s.str.count( ker )).sum(axis=1)
请注意,count
将计算每一条列中的 ker
( kerxker
。 如果您期望或只想计算一个<代码> ker ,则每一方可使用:
df[ count ] = df.apply(lambda s: s.str.contains( ker )).sum(axis=1)
如果您希望exactcompes(而不是子孙),则简单使用:
df[ count ] = df.eq( ker ).sum(axis=1)
产出:
A B C D count
0 ker 4 4 4 1
1 2 5 13 5 0
2 3 6 2.5ser 6 0
3 4 ker ker 2.5ser 2
下面是显示差异的另一个例子:
df = pd.DataFrame({ A : [ ker , kernel , 3 , 4 ],
B : [ 4 , 5 , 6 , kerker ],
C : [ 4 , 13 , 2.5ser , ker ],
D : [ 4 , 5 , 6 , 2.5ser ]})
cols = [ A , B , C , D ]
df[ count1 ] = df[cols].apply(lambda s: s.str.count( ker )).sum(axis=1)
df[ count2 ] = df[cols].apply(lambda s: s.str.contains( ker )).sum(axis=1)
df[ count3 ] = df[cols].eq( ker ).sum(axis=1)
产出:
A B C D count1 count2 count3
0 ker 4 4 4 1 1 1
1 kernel 5 13 5 1 1 0
2 3 6 2.5ser 6 0 0 0
3 4 kerker ker 2.5ser 3 2 1