我有一个名为data_df的数据框,看起来像这样:
price vehicleType yearOfRegistration gearbox powerPS model kilometer fuelType brand notRepairedDamage postalCode0 18300 coupe 2011 manuell 190 NaN 125000 diesel audi ja 669541 9800 suv 2004 automatik 163 grand 125000 diesel jeep NaN 904802 1500 kleinwagen 2001 manuell 75 golf 150000 benzin volkswagen nein 910743 3600 kleinwagen 2008 manuell 69 fabia 90000 diesel skoda nein 604374 650 limousine 1995 manuell 102 3er 150000 benzin bmw ja 33775
尝试将分类列(如vehicleType
)转换为虚拟变量(“独热编码”):
columns = [ 'vehicleType' ] #, 'gearbox', 'model', 'fuelType', 'brand', 'notRepairedDamage' ]for column in columns: dummies = pd.get_dummies(data_df[column], prefix=column) data_df.drop(columns=[column], inplace=True) data_df = data_df.add(dummies, axis='columns')
但原始数据丢失了:
brand fuelType gearbox kilometer model notRepairedDamage ... vehicleType_coupe vehicleType_kleinwagen vehicleType_kombi vehicleType_limousine vehicleType_suv yearOfRegistration0 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN1 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN2 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN3 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN4 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
那么,如何用虚拟变量替换给定的列呢?
回答:
# 获取'vehicleType'列的独热编码one_hot = pd.get_dummies(data_df['vehicleType'])# 删除已编码的列data_df = data_df.drop('vehicleType',axis = 1)# 连接编码后的数据框data_df = data_df.join(one_hot)data_df