这是我的数据框的样子
id name val weight
1 x 10 0.3
1 y 5 0.1
1 z 6 -0.7
1 q 7 -0.3
2 t 3 0.5
2 m 2 0.1
2 s 8 -0.8
2 b 9 -0.2
这就是我想要的样子:
id name_pos val_pos weight_pos name_neg val_neg weight_neg
1 x 10 0.3 z 6 -0.7
1 y 5 0.1 q 7 -0.3
2 t 3 0.5 s 8 -0.8
2 m 2 0.1 b 9 -0.2
我想不出一个完美的解决方案来完成此任务。我唯一的想法是蛮力方法。
任何帮助将不胜感激。
答案 0 :(得分:1)
这是一个可行的解决方案:
df.set_index(['id'], inplace = True)
pd.concat((df[df.weight.gt(0)].add_suffix('_pos'),
df[df.weight.lt(0)].add_suffix('_neg')),
axis=1)