我有五个汽车品牌(宝马、福特、保时捷、斯柯达、马自达)的列表,我的数据框中的数据将仅来自这五个品牌之一。
模型列将始终包含品牌,但有时品牌列未填充。有没有办法根据包含所需字符串的模型更新品牌。模型也可能并不总是在字符串的开头。
我的数据框:
Brand Model
0 nan Mazda CX-5
1 BMW BMW X5
2 BMW BMW 2 Series
3 Ford Ford Focus
4 Porsche Porsche Cayenne
5 Skoda Skoda Octavia
6 nan 911 Porsche
7 nan 8 Series BMW
我想要的数据框:
Brand Model
0 Mazda Mazda CX-5
1 BMW BMW X5
2 BMW BMW 2 Series
3 Ford Ford Focus
4 Porsche Porsche Cayenne
5 Skoda Skoda Octavia
6 Porsche 911 Porsche
7 BMW 8 Series BMW
您可以使用正则表达式来提取第一个(仅字母)单词和fillna
.
df['Brand'] = df['Brand'].fillna(df['Model'].str.extract('([a-zA-Z]+)',
expand=False))
输出:
Brand Model
0 Mazda Mazda CX-5
1 BMW BMW X5
2 BMW BMW 2 Series
3 Ford Ford Focus
4 Porsche Porsche Cayenne
5 Skoda Skoda Octavia
6 Porsche 911 Porsche
注意。如果品牌名称并不总是只有第一个字母,您需要提供有关如何识别它的更多详细信息。
brands = ['BMW', 'Ford', 'Porsche', 'Skoda', 'Mazda']
regex = '(%s)' % '|'.join(brands)
df['Brand'] = df['Brand'].fillna(df['Model'].str.extract(regex, expand=False))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句