[英]assign three values based on condition to pandas df column
我有一个熊猫df,其中包含一列正负负数。 我想创建另一列,如果no> 0则为1,如果no <0则为-1,如果数字为0则为0。
我正在尝试为每一行使用for循环来执行此操作,但是它花费的时间太长。 我想知道是否有更快的方法。 我还想知道是否可以将相同的逻辑扩展到正负timedelta对象。
谢谢。
我的最终df应该如下所示:
df = pd.DataFrame({'a':[1, 2, -1, 0, -2], 'b':[1, 1, -1, 0, -1]})
a b
0 1 1
1 2 1
2 -1 -1
3 0 0
4 -2 -1
其中b是根据a的值分配的col
这是numpy
sign
一种方法
np.sign(df.a)
Out[118]:
0 1
1 1
2 -1
3 0
4 -1
Name: a, dtype: int64
df['b'] = np.sign(df.a)
尝试使用np.where并提供条件
import numpy as np
df['b']= np.where(df['a']>0,1,
np.where(df['a']<0,-1,0))
a b
0 1 1
1 2 1
2 -1 -1
3 0 0
4 -2 -1
m1= df['a'] >0
m2= df['a'] <0
df['b'] = np.select([m1, m2],
[ 1, -1],
default=0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.