我有一个带有列及其字符串值的pandas数据框,如下所示:

Aircraft Type
Boeing 777
777-200
B777
B777-300ER
777-312


我想将所有字符串值替换为“ Boeing 777”,但是我在数据中以略有不同的格式表示了多个单独的Boeing 777飞机实例。我该如何编写代码,以将包含“ 777”的字符串替换为“ Boeing 777”的所有实例?我的问题是,波音777飞机以30多种不同的格式表示,上面的数据示例只是其中的一个子集。唯一常见的主题是所有格式都包括“ 777”。

我希望最终输出看起来像这样:

Aircraft Type
Boeing 777
Boeing 777
Boeing 777
Boeing 777


我尝试了以下代码:

commerical_df['Model'].replace({'B777':'Boeing 777', '777-300ER':'Boeing 777'})


但同样,问题是我有30多个不同的值需要手动查找和替换,这很麻烦。

最佳答案

您可以将Series.str.containsnumpy.where一起使用,以有条件地检查字符串777是否存在,然后将其转换为Boeing 777

注意
我添加了另一行不包含777的行以显示解决方案:

# Print original dataframe
print(df)
  Aircraft Type
0    Boeing 777
1       777-200
2          B777
3    B777-300ER
4       777-312
5           888


df['Aircraft Type'] = np.where(df['Aircraft Type'].str.contains('777'),
                               'Boeing 777',
                               df['Aircraft Type'])




print(df)
  Aircraft Type
0    Boeing 777
1    Boeing 777
2    Boeing 777
3    Boeing 777
4    Boeing 777
5           888

09-05 13:56