当前正在执行字符串相等
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.applymap
in
:
df['Contains string'] = (df[columns].applymap(lambda x: 'myString' in x)).sum(axis=1)