如何将假人添加到 Pandas DataFrame?
Posted
技术标签:
【中文标题】如何将假人添加到 Pandas DataFrame?【英文标题】:How to add dummies to Pandas DataFrame? 【发布时间】:2019-07-12 10:38:43 【问题描述】:我有一个如下所示的 data_df:
price vehicleType yearOfRegistration gearbox powerPS model kilometer fuelType brand notRepairedDamage postalCode
0 18300 coupe 2011 manuell 190 NaN 125000 diesel audi ja 66954
1 9800 suv 2004 automatik 163 grand 125000 diesel jeep NaN 90480
2 1500 kleinwagen 2001 manuell 75 golf 150000 benzin volkswagen nein 91074
3 3600 kleinwagen 2008 manuell 69 fabia 90000 diesel skoda nein 60437
4 650 limousine 1995 manuell 102 3er 150000 benzin bmw ja 33775
尝试将分类列 (vehicleType
) 转换为假人(“one hot encoding”):
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 yearOfRegistration
0 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN
那么,如何用假人替换给定的列?
【问题讨论】:
您能否提供一个稍微简化一些的示例(列数更少——2 到 3)并为它们提供您预期的输出? 【参考方案1】:# Get one hot encoding of columns 'vehicleType'
one_hot = pd.get_dummies(data_df['vehicleType'])
# Drop column as it is now encoded
data_df = data_df.drop('vehicleType',axis = 1)
# Join the encoded df
data_df = data_df.join(one_hot)
data_df
【讨论】:
pd.get_dummies
可以做到这一切。 pd.get_dummies(data_df, columns=['vehicleType'], prefix='', prefix_sep='')
以前的评论应该是公认的答案【参考方案2】:
你可以使用更紧凑的方式:
data_df = pd.get_dummies(data,columns=['vehicleType'],drop_first=True)
此行将删除您的旧列“vehicleType”,并自动将创建的列加入您的数据集
【讨论】:
以上是关于如何将假人添加到 Pandas DataFrame?的主要内容,如果未能解决你的问题,请参考以下文章
将字典值增量添加到 pandas DataFrame。具有dict键列名的DataFrame