Python 如何基于另一列的值拆分多个列
下面是我的数据框的外观Python 如何基于另一列的值拆分多个列,python,pandas,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
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
我想不出一个完美的解决方案来完成这个任务。我唯一的想法就是暴力手段
任何帮助都将不胜感激 这里有一个有效的解决方案:
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)
每个id是否正好有4行?如果没有,会发生什么?是的,它们将始终有一组行。这是否回答了您的问题?