如何解决合并两个pandas列作为索引,创建新列,列名作为值
import pandas as pd
df = pd.DataFrame({"A": [1,3,7,10],"B": [2,5,8,11],"C": list("WXYZ") })
print(df)
>>> A B C
>>>0 1 2 W
>>>1 3 5 X
>>>2 7 8 Y
>>>3 10 11 Z
我现在想合并两列A
和B
作为索引,保留C
,并创建一个新列vals
代表前{{1} }} 和 A
列:
B
我尝试了 vals C
1 A W
2 B W
3 A X
5 B X
7 A Y
8 B Y
10 A Z
11 B Z
、stack
、pivot
的多个版本,但都没有成功。我可以一瘸一拐地通过终点线:
melt
这不仅看起来很糟糕,而且还有几个缺点(dtype 更改等)。我敢打赌有一个更好的 Pandas 解决方案来解决这个问题。
解决方法
确实是melt
:
df.melt('C').set_index('value')
输出:
C variable
value
1 W A
3 X A
7 Y A
10 Z A
2 W B
5 X B
8 Y B
11 Z B
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。