如何根据另一列的值拆分多列

时间:2019-12-30 18:21:17

标签: python pandas

这是我的数据框的样子

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

我想不出一个完美的解决方案来完成此任务。我唯一的想法是蛮力方法。

任何帮助将不胜感激。

1 个答案:

答案 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)