python - 将具有选定列的数据框转换为具有指标值的值列
问题描述
我有一个包含 5 列的数据框,每列取值从 1 到 N。
df = pd.DataFrame({"A" : {0 : 1, 1 : 10, 2 : 12},
"B" : {0 : 7, 1 : 6, 2 : 3},
"C" : {0 : 11, 1 : 4, 2 : 1},
"D" : {0 : 6, 1 : 5, 2 : 4},
})
df
我想将此数据帧转换为具有第 1 到第 N 列的数据帧,其中第 j 列是该值是否存在于第 i 行中的指示符。
我尝试过这样的事情
(df
.melt()
.assign(val=1)
.pivot_table(values='val', columns='value', fill_value=0)
)
但我似乎无法得到想要的结果
解决方案
你可以试试:
(df
.reset_index()
.melt(id_vars='index')
.assign(val=1)
.pivot_table(values='val', index='index', columns='value', fill_value=0, aggfunc='max')
)
数据输入:
print(df)
A B C D
0 1 7 11 6
1 10 6 4 5
2 12 3 1 4
输出:
value 1 3 4 5 6 7 10 11 12
index
0 1 0 0 0 1 1 0 1 0
1 0 0 1 1 1 0 1 0 0
2 1 1 1 0 0 0 0 0 1
推荐阅读
- verilog - ROM 4kx8 verilog,使用 $readmemb 读取文件时出现问题
- laravel - laravel 请求周期会在每次页面刷新时重复吗?
- javascript - Javascript 使用键映射和正则表达式替换
- java - JDA Discord - 如何在数组中获取对机器人消息做出反应的用户的所有名称
- python - 如何将函数返回值存储在其他函数中
- kotlin - 我很好奇 Kotlin 的 toList 和 IntArray 的速度差异
- php - 如何使用 POST 方法构造 API URL
- node.js - 在 Jenkins 中从 Node / package.json 获取项目版本
- java - 下界斯卡拉
- javascript - AppendData 函数:将 JSON 内容插入 HTML