python - 如何将系列属性名称转换为具有相应属性值的标题
问题描述
情况
我有一个数据框attributes
,其中包含有关 3 系列汽车的一些属性信息:
attributes = {'brand': ['Honda Civic','Honda Civic','Honda Civic','Toyota Corolla','Toyota Corolla','Audi A4'],
'attributeName': ['wheels','doors','fuelType','wheels','color','wheels'],
'attributeValue': ['4','2','hybrid','4','red','4']
}
预期结果
result = {'brand': ['Honda Civic','Toyota Corolla','Audi A4'],
'wheels': ['4','4','4'],
'doors': ['2','',''],
'fuelType':['hybrid','',''],
'color': ['','red','']
}
我怎么能意识到这一点?
将值从attributeName
转换成系列以attributeValue
在一行中代表每个品牌/汽车的值。
随着get_dummies
我得到这个转换,但只有真/假值而不是原始值。
解决方案
这是一个简单的pivot
:
attributes.pivot(index='brand',
columns='attributeName',
values='attributeValue').fillna('')
或者,因为您的列的顺序正确,所以更短:
attributes.pivot(*attributes).fillna('')
要将其完全格式化为您提供的输出(列顺序除外,请提供详细信息),您可以使用:
(attributes.pivot(index='brand', columns='attributeName', values='attributeValue')
.fillna('').rename_axis(None, axis=1)
.reset_index()
)
输出:
brand color doors fuelType wheels
0 Audi A4 4
1 Honda Civic 2 hybrid 4
2 Toyota Corolla red 4
推荐阅读
- python - 如何从多个字典列表中获取特定值
- c++ - 构造函数中类的默认值
- python - FastAPI:ModuleNotFoundError:没有名为“uvicorn”的模块
- azure - 带有 -UserAssignedIdentity 的 Set-AzApiManagement 给出错误请求
- python - UnicodeEncodeError: 'latin-1' 读取文本文件时
- spring-security - Vaadin + Spring Security 可以仅充当 oauth2 用户代理而不是客户端吗?
- api - 对于 GSuite,新添加的用户未显示
- powershell - 我需要在卸载 symantec 之前重新启动远程计算机
- c++ - C++ 字符串赋值错误。如何为结构指针的字符串成员赋值?
- ios - iOS 14 (Swift) 中奇怪的 MFMailComposeViewController 行为