如何用一个公共字符串值替换Pandas数据框列中的多个不同字符串?

时间:2019-05-05 21:39:06

标签: python pandas

我有一个带有一列的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多个不同的值,这很麻烦。

2 个答案:

答案 0 :(得分:0)

您可以将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

答案 1 :(得分:0)

您可以尝试

commerical_df.loc[commerical_df['Model'].str.contains('777'), 'Model'] = 'Boeing 777'