微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

合并两个pandas列作为索引,创建新列,列名作为值

如何解决合并两个pandas列作为索引,创建新列,列名作为值

我有一个 df:

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

我现在想合并两列AB作为索引,保留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 stackpivot 的多个版本,但都没有成功。我可以一瘸一拐地通过终点线:

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 举报,一经查实,本站将立刻删除。