首页 > 解决方案 > 如何根据现有特征的标签创建新特征?

问题描述

我有一个带有 74 个不同标签df的功能的数据框。Subject_Car_Make标签代表汽车品牌。

我想创建一个代表汽车品牌所在地区的新列:
即“亚洲”、“欧洲”、“美国”和“其他”。

我尝试了以下方法,但没有奏效:

## create a list of our conditions
conditions = [
    (df.isin({'Subject_Car_Make': ['TOYOTA', 'Honda', 'Lexus', 'Hyundai', 'Kia', 'Nissan', 'Mitsubishi', 'Acura', 'Mazda', 'Infiniti', 'Isuzu', 'Suzuki', 'GAC', 'Subaru', 'FOTON', 'Geely', 'Ashok Leyland', 'CHANGAN', 'Yamaha', 'Howo', 'Tata', 'Rexton', 'Raston', 'Bajaj', 'Jincheng', 'BRILLIANCE', 'ZOYTE']})),
    (df.isin({'Subject_Car_Make': ['Mercedes', 'Volkswagen', 'Iveco', 'Range Rover', 'BMW', 'Land Rover', 'Land Rover.', 'Man', 'Peugeot', 'Volvo', 'Audi', 'DAF', 'Skoda', 'Porsche', 'Scania', 'Opel', 'Renault', 'Jaguar', 'MINI COOPER', 'Astra', 'Seat', 'Fiat']})),
    (df.isin({'Subject_Car_Make': ['Mack', 'Pontiac', 'Chevrolet', 'Jeep', 'Dodge', 'GMC', 'LIBERTY', 'Wrangler Jeep', 'Grand Cherokee', 'Chrysler', 'Hummer', 'Rolls Royce', 'COMMANDER', 'MG', 'Cadillac', 'Lincoln', 'Buick']})),
    (df.isin({'Subject_Car_Make': ['.', 'As Attached', 'Innson', 'Black', 'ABG', 'Ashok Leyland', 'KA', 'Motorcycle']}))
    ]

## create a list of the values we want to assign for each condition
values = ['Asian Brand', 'European Brand', 'American Brand', 'Other']

## create a new column and use np.select to assign values to it using our lists as arguments
df['Car_Brand'] = np.select(conditions, values)

## display updated DataFrame
df[['Subject_Car_Make', 'Car_Brand']].head()

对于每个字典,我试图表示现有列中的条件或可能Subject_Car_Make的值,并且我试图用这些值填充新特性的相应值Car_Brand

似乎我让这变得不必要地复杂了。有没有办法解决这个问题?

标签: pythonpandasdataframe

解决方案


推荐阅读