我有一个带有列及其字符串值的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.contains
与numpy.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