Pandas使用列标题作为值将多个列转换/合并为单个列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas使用列标题作为值将多个列转换/合并为单个列相关的知识,希望对你有一定的参考价值。
我希望将三列组合成一个数据框中的单个列,使用列标题作为新列的值。所有三列都具有唯一值'1',其他两列只有NaN。
本来我想使用pivot,但我怀疑合并操作会更容易?我只是不确定如何去做。
我需要转
index A B C time id
0 1 NaN NaN 4.42 1
1 1 NaN NaN 4.48 3
2 1 NaN NaN 5.45 2
3 NaN 1 NaN 6.64 2
4 NaN 1 NaN 7.49 1
5 NaN 1 NaN 7.72 3
6 NaN NaN 1 8.13 1
7 NaN NaN 1 8.65 2
8 NaN NaN 1 9.07 3
成...
index type time id
0 A 4.42 1
1 A 4.48 3
2 A 5.45 2
3 B 6.64 2
4 B 7.49 1
5 B 7.72 3
6 C 8.13 1
7 C 8.65 2
8 C 9.07 3
答案
使用:
set_index
列不重塑- 通过
stack
重塑所有其他列 -NaNs
行被删除 reorder_levels
用于更改列的最终排序reset_index
来自MultiIndex
的专栏- 删除
drop
列 rename
第一栏
df = (df.set_index(['time','id'])
.stack()
.reorder_levels([2,0,1])
.reset_index(name='a')
.drop('a', 1)
.rename(columns={'level_0':'type'}))
print (df)
type time id
0 A 4.42 1
1 A 4.48 3
2 A 5.45 2
3 B 6.64 2
4 B 7.49 1
5 B 7.72 3
6 C 8.13 1
7 C 8.65 2
8 C 9.07 3
以上是关于Pandas使用列标题作为值将多个列转换/合并为单个列的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Pandas 将多个 csv 文件中的单个数据列合并为一个?
如何解压缩数据框列中存在的 json 的键,值将转换为键作为列,而使用 python 将其值转换为列?