在另一列的阈值整数列中设置整数值?
问题描述:
目标是使用列B中的值设置一个整数阈值,并在列C中记录这些阈值。列B中的阈值为-1和1,结束于0交叉,以便在列C中记录-1和1的值。所得到的数据帧将是:在另一列的阈值整数列中设置整数值?
A B C
1 D 0.25 0
2 D 0.50 0
3 D 0.75 0
4 D 1.00 1
5 D 1.25 1
6 D 1.75 1
7 D 0.50 1
8 D -0.25 0
9 D 1.25 1
10 D 0.75 1
11 D -0.75 0
12 D -1.00 -1
13 D -1.50 -1
14 D -2.00 -1
14 D -0.75 -1
14 D 0.00 0
到目前为止,我已经尝试实现与.bins()为数据帧,但它并没有真正通过迭代或理解的系列,而只是设定值箱。此代码是:
df['C'] = 0
bins = [-1,0, 1] #with values from df['B']
group_names = [-1,0, 1] #with values from df['B']
g = pd.cut(group_em['B'], bins, labels = group_names)
g= g.fillna(0)
答
你可以尝试这样的事情,使用numpy.where
:
import numpy as np
df['C'] = np.where(df.B >= 1, 1, # if B >= 1 then C is 1
np.where(df.B <= -1, -1, # if B <= -1 then C is -1
np.where(np.sign(df.B).diff() != 0, 0, np.nan))) # else if B changes sign
# (cross zero) then C is 0 otherwise C is nan
df.ffill() # fill nan with previous values
# A B C
#1 D 0.25 0.0
#2 D 0.50 0.0
#3 D 0.75 0.0
#4 D 1.00 1.0
#5 D 1.25 1.0
#6 D 1.75 1.0
#7 D 0.50 1.0
#8 D -0.25 0.0
#9 D 1.25 1.0
#10 D 0.75 1.0
#11 D -0.75 0.0
#12 D -1.00 -1.0
#13 D -1.50 -1.0
#14 D -2.00 -1.0
#14 D -0.75 -1.0
#14 D 0.00 0.0
大,该解决方案是正确的,因为实现的。快速注释,至少对于我的代码:我必须分配df ['C'] = df ['C'] .ffill()。除了这个问题,我将接下来实现的是一个线性整数分配,而不是-1和1.这将保持阈值,但改变C列值以基于关闭柱面D线性缩放,而df ['C'] = -1或1.谢谢你,我欣赏它! –
不客气。很高兴它有帮助。是的,您需要将专栏分配回去。 'ffill'不会修改列。 – Psidom