首页 > 解决方案 > Python Pandas - 在数据框中找到一个子字符串,然后在没有循环的情况下求和

问题描述

目前正在做字符串相等

df['Contains string'] = (df[columns] == 'myString').sum(axis=1)

我怎么能做同样的事情,但找到一个子字符串而不是一个完整的字符串,比如

df['Contains string'] = (df[columns].contains('myString')).sum(axis=1)

但这不起作用。也试过str.contains, series.index, series.find

标签: pythonpandasnumpy

解决方案


因为Series.str.contains没有实现DataFrame使用DataFrame.apply

df['Contains string'] = (df[columns].apply(lambda x: x.str.contains('myString'))).sum(axis=1)

或者第一级DataFrame.stacksum谢谢@anky:

df['Contains string'] = df[columns].stack().str.contains('myString').sum(level=0)

或者,如果没有缺失值可能DataFrame.applymap与 一起使用in

df['Contains string'] = (df[columns].applymap(lambda x: 'myString' in x)).sum(axis=1)

推荐阅读