我有一个五个汽车品牌的名单(宝马,福特,保时捷,斯柯达,马自达)的数据在我的数据将只来自这五个品牌之一。
模型列将始终包含“品牌”,但有时未填充“品牌”列。是否有一种基于包含所需字符串的模型来更新品牌的方法。模型也可能并不总是在字符串的开头。
我的数据:
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我想要的Dataframe
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发布于 2022-04-13 11:29:06
您可以使用regex提取第一个单词(只有字母)和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))https://stackoverflow.com/questions/71856709
复制相似问题