我试图在一列中堆叠两列,但我希望保留一个布尔值字段,用于指示新值来自何处。使用pivot和melt并没有取得太大的成功。任何帮助都是有用的。下面是一个小例子
param | accuracy | accuracy_with_reg
----------------------------
4 | 0.813 | 0.934
5 | 0.456 | 0.654
6 | 0.342 | 0.564 添加到以下内容
param | accuracy | regularized
----------------------------
4 | 0.813 | False
5 | 0.456 | False
6 | 0.342 | False
4 | 0.934 | True
5 | 0.654 | True
6 | 0.654 | True谢谢
发布于 2021-02-19 03:44:59
您可以像这样使用melt
pd.melt(df, id_vars=['param'], value_vars=['accuracy', 'accuracy_with_reg'],
var_name='regularized', value_name='accuracy_val')
param regularized accuracy_val
0 4 accuracy 0.813
1 5 accuracy 0.456
2 6 accuracy 0.342
3 4 accuracy_with_reg 0.934
4 5 accuracy_with_reg 0.654
5 6 accuracy_with_reg 0.564如果您希望在正则化的列中使用True或False,那么您可以使用不同的方法,但我会继续在前面的列中使用rename
pd.melt(df.rename(columns={'accuracy':False, 'accuracy_with_reg':True}),
id_vars=['param'], value_vars=[False, True],
var_name='regularized', value_name='accuracy')
param regularized accuracy
0 4 False 0.813
1 5 False 0.456
2 6 False 0.342
3 4 True 0.934
4 5 True 0.654
5 6 True 0.564https://stackoverflow.com/questions/66266817
复制相似问题