在正值和负值上拆分列

Cod*_*123 6 python numpy dataframe pandas

如何根据条件将列拆分为两个不同的列,但保留一个键?例如

      col1  col2   time       value
0      A     sdf  16:00:00     100
1      B     sdh  17:00:00     -40
2      A     sf   18:00:45     300 
3      D     sfd  20:04:33     -89
Run Code Online (Sandbox Code Playgroud)

我想要一个像这样的新数据帧

     time       main_val    sub_val
0   16:00:00     100         NaN
1   17:00:00     NaN         -40
2   18:00:45     300         NaN
3   20:04:33     NaN         -89
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 6

你可以使用mask:

mask = df['value'] < 0
df['main_val'] = df['value'].mask(mask)
df['sub_val'] = df['value'].mask(~mask)
df = df.drop(['col1','col2', 'value'], axis=1)
print (df)
       time  main_val  sub_val
0  16:00:00     100.0      NaN
1  17:00:00       NaN    -40.0
2  18:00:45     300.0      NaN
3  20:04:33       NaN    -89.0
Run Code Online (Sandbox Code Playgroud)