参照列x中的特定元素替换列y中的特定元素

时间:2019-02-28 18:48:51

标签: python pandas

我正在使用pandas在python上处理汽车销售数据: 汽车 梅赛德斯,奥迪,宝马,大众,梅赛德斯,宝马

类型 轿车,跨界车,其他,货车,其他,SUV

现在,我想将“ Other”的类型替换为:当car = Mercedes时,键入= Sedan,当car = BMW时,然后键入= SUV,依此类推。 我正在努力做到这一点。需要协助。

2 个答案:

答案 0 :(得分:2)

编辑:根据您提供的示例数据更新答案

设置-注意,我在body列中添加了具有“其他”的行:

import pandas as pd
import numpy as np

cars = [['Ford',15500.0,'crossover',68,2.5,'Gas','yes',2010,'Kuga','full'],
        ['Mercedes-Benz',20500.0,'sedan',173,1.8,'Gas','yes',2011,'E-Class','rear'],
        ['Mercedes-Benz',20500.0,"Other",173,1.8,'Gas','yes',2011,'E-Class','rear'],
        ['Ford',15500.0,"Other",68,2.5,'Gas','yes',2010,'Kuga','full']] 

car_sales = pd.DataFrame(cars, columns=['car','price','body','mileage','engV','engType','registration','year','model','drive'])

步骤1-用NaN替换“其他”值(这使您可以使用fillna函数):

car_sales["body"].replace("Other", np.nan, inplace=True)

步骤2-为每种汽车类型创建值的字典图,然后使用fillna填写值:

car_types = {"Mercedes-Benz":"sedan", "Ford":"crossover"}
car_sales["body"].fillna(car_sales["car"].map(car_types), inplace=True)

答案 1 :(得分:1)

创建一个以car作为键并输入值的字典

d = {'Mercedes' : 'Sedan', 'BMW' : 'SUV'} 

现在使用map将列映射到值,

df.loc[df['Type'] == 'Other', 'Car'].map(d)

提供数据框示例以获得更完整的答案