首页 > 解决方案 > 在pandas python中逐列计算匹配部分字符串的出现次数

问题描述

new_data 是一个有 4 列的 pandas 数据框,并且:

如果我想按列计算精确匹配的出现次数,我这样做:

new_data[new_data == 'blank'].count()

输出:

A          0
B          0
C          0
D          2654

如果我想要字符串 'bla' 的部分匹配,应该是这样的:

new_data[new_data in 'bla'].count()

但这当然行不通。正确的方法是什么?

标签: pythonpandas

解决方案


使用DataFrame.applyand Series.str.containswith sumfor count Trues:

np.random.seed(1234)

new_data = pd.DataFrame(np.random.choice(['a blas', 's'], size=(2,4)), columns=list('ABCD'))
print (new_data)
        A       B       C  D
0       s       s  a blas  s
1  a blas  a blas  a blas  s

print (new_data.apply(lambda x: x.str.contains('bla')).sum())
A    1
B    1
C    2
D    0
dtype: int64

您的解决方案:

print (new_data[new_data.apply(lambda x: x.str.contains('bla'))].count())
A    1
B    1
C    2
D    0
dtype: int64

推荐阅读