python - 在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()
但这当然行不通。正确的方法是什么?
解决方案
使用DataFrame.apply
and Series.str.contains
with sum
for count True
s:
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
推荐阅读
- azure - Azure ARM - 增量重新部署期间的 SSH 公钥错误
- php - PHP 标头重定向在 Ajax 请求中不起作用
- powershell - Powershell - 修剪/拆分对象以导出-csv
- python - 图中顶点之间的意外连接
- r - 将树状图转换为 ggplot 的最佳方法?
- python - PyQT5 在矩形中添加标签和图标
- python - Django 渲染指定目录中不存在的模板
- flutter - 将列表转换为 json 对象删除一些键时出现颤振错误
- r - R:如何通过部分匹配它们的列来合并两个数据集?
- python - Django 部署 - 在 fastCGI 应用程序配置中找不到 scriptProcessor