将第二列对应值合并到第一列(pandas)
我在我的pandas数据框中有两列,长得像这样:
ID Value1 Value2
ID1 1.00 0.12
ID2 2.00 0.98
ID3 3.00 0.41
ID4 4.00 0.69
我想把这两列合并,也就是说,把第二列对应的值合并到第一列里:
ID Value1
ID1 1.00
Value2 0.12
ID2 2.00
Value2 0.98
ID3 3.00
Value2 0.41
ID4 4.00
Value2 0.69
这看起来是个简单的逻辑,但我就是搞不明白。有没有什么想法或者帮助呢?非常感谢。
1 个回答
2
你可以使用melt
这个功能来处理数据表中的列,之后再进行一些后续处理:
out = (df
.melt('ID', ignore_index=False)
.assign(ID=lambda d: d['ID'].mask(d['variable'].eq('Value2'), 'Value2'))
.sort_index().drop(columns='variable')
.rename(columns={'value': 'Value1'})
)
输出结果:
ID Value1
0 ID1 1.00
0 Value2 0.12
1 ID2 2.00
1 Value2 0.98
2 ID3 3.00
2 Value2 0.41
3 ID4 4.00
3 Value2 0.69