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

因为Series.str.contains不是为DataFrame使用而实现的,DataFrame.apply

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

或者DataFrame.stack第一级sum,谢谢@anky:

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

或者,如果可能没有缺失值,请使用DataFrame.applymapin

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

相关内容

最新更新