python - Pandas 将多列转换为一列
问题描述
我有一个这样的数据集
A B C D
Cat Meow 1 2
Dog Grr 3 4
我需要通过创建新列来转换成 bwlow 格式
Level Focus C D
A Cat 1 2
A Dog 3 4
B Meow 1 2
B Grr 3 4
我不确定如何使用 pivot_table() 实现这一点
解决方案
尝试使用melt
:
df.melt(['C', 'D'], var_name='Level', value_name='Focus')
输出:
C D Level Focus
0 1 2 A Cat
1 3 4 A Dog
2 1 2 B Meow
3 3 4 B Grr
出于教学原因的另一种方法:
df.set_index(['C', 'D']).stack().reset_index().rename(columns={'level_2':'Level',0:'Focus'})
输出:
C D Level Focus
0 1 2 A Cat
1 1 2 B Meow
2 3 4 A Dog
3 3 4 B Grr
推荐阅读
- r - 如何使用 dplyr 对此代码 r 代码进行矢量化
- android - 如何启动服务,然后从片段绑定到它
- vb.net - 从文本框中提取特定数字
- angular - 如何使用 ngx-bootstrap BsDatePicker 禁用周末(周六和周日)?
- javascript - 检测多行正则表达式样本的结尾(相当于 \z)
- python - Python在文件中相同模式的块的完全匹配之后添加一行
- typescript - 在 TypeScript 和 HTML 中定义、导入和使用自定义元素
- typescript - ts-node 抛出无关的奇怪错误,但使用 tsc 时没有抛出错误
- node.js - 如何更改 'app.use(express.static(path.join(__dirname, 'public')));' 服务请求以 '/api/' 结尾
- angular - NgRx 根存储的选择器