将第二列对应值合并到第一列(pandas)

1 投票
1 回答
28 浏览
提问于 2025-04-14 16:34

我在我的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

撰写回答