首页 > 解决方案 > 如何基于另一列创建一列范围为 1-4 的虚拟变量?

问题描述

我有一个关于车辆的数据集,我希望在我的数据框中创建一个新列,其值为 1 到 4:fuel_type = dummy (1,2,3,4) for ('Diesel', 'Petrol' , 'LPG', 'CNG'), 以下是我对此的想法,虽然我不知道如何使它工作。燃料是包含分类名称的另一列 = ('Diesel', 'Petrol', 'LPG', 'CNG')

def fuel():
    if df['fuel'] =='Diesel':
            return 1
    elif df['fuel'] =='Petrol':
            return 2
    elif df['fuel'] =='LPG':
            return 3
    elif df['fuel'] =='CNG':
            return 4

或者

df['fuel_type'] = df.fuel.apply(lambda x: 1 if x=='Diesel' else
(2 if 'Petrol' else
(3 if 'LPG' else
(4 if 'CNG'))))

标签: pythonpandasnumpydataframe

解决方案


创建一个字典d并将其映射为map

d = {'Diesel': 1, 'Petrol': 2, 'LPG': 3, 'CNG': 4}
df['fuel_type'] = df['fuel'].map(d)

推荐阅读