hse*_*bie 3 python lambda pandas kaggle
试图学习一些东西,我正在搞乱Kaggle上的全球鲨鱼攻击数据库,我正试图找到使用lambda函数和字符串来填充字符串的最佳方法str.contains.
基本上任何字符串都包含一个短语,skin diving例如'skin diving for abalone',在data['Activity']列中我想用活动替换活动skin diving.(皮肤潜水有92种变种因此尝试使用lambda功能)
我可以使用返回一个布尔系列
data['Activity].str.contains('skin diving')
Run Code Online (Sandbox Code Playgroud)
但是如果这个条件成立,我不确定如何更改值
我的lambda函数= data.apply(lambda x: 'free diving' if x.str.contains('free diving))但我得到一个语法错误,我不熟悉lambda函数和pandas来做对,任何帮助将不胜感激.
您可以使用lambda中的in运算符来测试子字符串,而不是使用Series.str方法
data['activity'] = data['activity'].apply(lambda x: 'skin diving' if 'skin diving' in x else x)
Run Code Online (Sandbox Code Playgroud)
你可以使用str.contains方法np.where
In [141]: df
Out[141]:
activity
0 free diving ok
1 ok
In [142]: df.activity = np.where(df.activity.str.contains('free diving'),
'free diving', df.activity)
In [143]: df
Out[143]:
activity
0 free diving
1 ok
Run Code Online (Sandbox Code Playgroud)