首页 > 解决方案 > 如何更改所有包含关键字的字符串向量?

问题描述

我有一个名为 df2 的数据框,如下所示: 在此处输入图像描述

我想用“ZOE”替换所有包含字符串“ZOE”或其他关键字的模型名称,因为它是“雷诺”或其他品牌。因此,例如,我想要 ZOE DYNMAIQUE INTENS AUTO -> AUTO,如果模型不包含带有字符“ZOE”的字符串,我希望它保留其模型名称。

我是 python 新手,我试过下面的代码没有运气。

df2['Model'] = df2['Model'].apply(lambda x: 'ZOE' if df1['Make']df2['Make'] == 'RENAULT' & df2['Model'].str.contains('ZOE') else df2['Model'])

   

我收到的错误是“其他”应该是 pandas.NA 或布尔值。得到了 str 。对于我哪里出错的任何帮助或点,我将不胜感激。谢谢 !

标签: pythonpandas

解决方案


首先,由于你需要列'Model'和'Make' lambda,你需要将lambda应用于所有df2(或至少应用于df2[['Model', 'Make']]。此外,你想循环数据帧的行,所以你必须将参数传递axis = 1applyhttps://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html)。然后,按照评论中的建议,访问行,你应该使用x而不是df2。所以(经过几次修改),我会尝试这样的事情:

df2['Model'] = df2.apply(lambda x: 'ZOE' if (x['Make'] == 'RENAULT') & ('ZOE' in x['Model']) else x['Model'], axis=1)

推荐阅读