python - 如何基于另一列创建一列范围为 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'))))
解决方案
创建一个字典d
并将其映射为map
:
d = {'Diesel': 1, 'Petrol': 2, 'LPG': 3, 'CNG': 4}
df['fuel_type'] = df['fuel'].map(d)
推荐阅读
- apache-kafka - 用于代理验证的 Kafka ssl ca 位置
- django - 仅允许父模型的所有者在使用通用视图时创建子模型(django-guardian)
- r - 应用 group_by 时保留 df 的所有变量并用日期汇总?
- node.js - 如何使用 mikro-orm 和 nestjs 获取左表数据
- postgresql - 如何使用 Powershell 脚本创建 PostgreSQL 数据库作为章鱼部署中的一个步骤
- sas - 在 SAS 中聚合两列中的数据
- javascript - 我如何使用它在我的页面中对数据进行排序的不同方式来处理这个 API?
- python - 为东海岸创建 datetimeindex 失败并出现 NonExistentTimeError
- nginx - 无法从 http://ip:19999 访问仪表板
- makefile - 让 cmake 使用自己的构建缓存