使用 lambda 条件和 pandas str.contains 来合并字符串
Using lambda conditional and pandas str.contains to lump strings
为了学习一些东西,我正在研究 Kaggle 上的全球鲨鱼攻击数据库,我正试图找到使用 lambda
函数和 [=14= 来合并字符串的最佳方法].
基本上任何地方的字符串都包含带有 skin diving
的短语,例如'skin diving for abalone'
,在 data['Activity']
列中,我想将 activity 替换为 skin diving
。 (有 92 种浮潜变化,因此尝试使用 lambda 函数)
我可以 return 使用
的布尔系列
data['Activity].str.contains('skin diving')
但我不确定如果此条件为真如何更改值
我的 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)
您可以将 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
为了学习一些东西,我正在研究 Kaggle 上的全球鲨鱼攻击数据库,我正试图找到使用 lambda
函数和 [=14= 来合并字符串的最佳方法].
基本上任何地方的字符串都包含带有 skin diving
的短语,例如'skin diving for abalone'
,在 data['Activity']
列中,我想将 activity 替换为 skin diving
。 (有 92 种浮潜变化,因此尝试使用 lambda 函数)
我可以 return 使用
的布尔系列data['Activity].str.contains('skin diving')
但我不确定如果此条件为真如何更改值
我的 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)
您可以将 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