python - 有没有办法从单元格中创建新列并让它们的值来自另一列
问题描述
我正在尝试找到一种方法从 pandas DataFrame 中的一列获取信息,并将其唯一值作为新列,并将其分数作为新形成的列中的值。IE
指数 | 产品 | 测试 | 分数 |
---|---|---|---|
0 | 一个 | 保护 | 5 |
1 | 一个 | 舒适 | 6 |
2 | 乙 | 保护 | 6 |
3 | 乙 | 舒适 | 7 |
最终结果是这样的:
指数 | 产品 | 保护 | 舒适 | 测试_C | 测试_D |
---|---|---|---|---|---|
0 | 一个 | 5 | 6 | 2 | 1 |
1 | 乙 | 6 | 7 | 3 | 8 |
我正在尝试这样做以清理我的数据,为机器学习做好准备。添加了 Test_C 和 Test_D 以表明不仅有 2 种类型的测试,而且根据执行的测试的产品不同而有所不同。
我曾尝试使用 Pandas.get_dummies 方法来做到这一点,但想知道是否有更清洁的方法来做到这一点。
解决方案
使用pivot()
:
df.pivot(index = 'Product', columns = 'Test', values = 'Score')
回报:
Product Comfort Protection
A 6 5
B 7 6
如果您想拥有数字索引或将“产品”保留为列而不是索引,请添加reset_index()
:
df.pivot(index = 'Product', columns = 'Test', values = 'Score').reset_index()
回报:
Product Comfort Protection
0 A 6 5
1 B 7 6
推荐阅读
- c++ - CMake target_sources() 用于更大的库
- flutter - 通过 Facebook 进行 Flutter 和 Firebase 身份验证:与设备的连接丢失
- c# - 继承控件中的 UWP 数据绑定
- mysql - MYSQL Group By Query,根据where条件减去数字
- java - JDeveloper 找不到具有 xades4j.jar 的 SignerEPES
- php - 向 Binance GET url 添加参数会导致签名错误
- apache-storm - 启动风暴雨云命令不起作用
- youtube-api - 可以发送到 YT 视频 API 的 ID 列表的最大可能长度是多少?
- .htaccess - Joomla Gzip 压缩仅在主页中工作
- c# - SignalR 集线器不响应对象参数