[英]Pandas Dataframe: assign to different columns based on positive/negative values
我要实现的目标如下:
a b c
0 1 0 0
1 -1 0 0
在上述数据帧中,对于a
列,对于正数行,分配给b
列中的相应行,对于负数,分配给c
列:
a b c
0 1 1 0
1 -1 0 -1
我现在正在使用以下代码,但是有什么方法可以用一行而不是两行来编写?
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': [1, -1], 'b':[0, 0], 'c':[0,0]})
df.b = np.where(df.a > 0, df.a, df.b)
df.c = np.where(df.a < 0, df.a, df.c)
我想使用np.where
就可以了,如果您希望它们位于一条标志线中
s=df.assign(key=['b','c']).set_index('key',append=True).unstack().sum(level=1,axis=1)
s
key b c
0 1.0 0.0
1 0.0 -1.0
df.update(s)
df
a b c
0 1 1.0 0.0
1 -1 0.0 -1.0
我开始写
df.b, df.c = (df.a > 0)*df.a + (df.a < 0)*df.b, (df.a < 0)*df.a + (df.a > 0)*df.c
然后意识到您可以完全按照自己的方式进行拆包。 我想有很多方法可以使您以更晦涩的方式完成此任务
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.