gpt4 book ai didi

python - 根据当前列中的值在 Pandas 中的 np.where 上创建条件

转载 作者:太空宇宙 更新时间:2023-11-04 02:26:48 24 4
gpt4 key购买 nike

我在 Pandas 中有一个数据框(下面的子集)。

DATE       IN 200D_MA   TEST    
10/30/2013 0 1 0
10/31/2013 0 1 0
11/1/2013 1 1 1 IN & 200D_MA both =1, results 1
11/4/2013 0 1 1 PREVIOUS TEST ROW =1 & 200DM_A = 1, TEST ans=1
11/5/2013 0 1 1 PREVIOUS TEST ROW =1 & 200DM_A = 1, TEST ans=1
11/6/2013 0 1 1
11/7/2013 0 1 1
11/8/2013 0 1 1
11/11/2013 0 0 0 PREVIOUS TEST ROW =1 & 200DM_A = 0, TEST ans=0

这在 excel 中很容易做到,所以我认为在 python 中也很容易做到。我有这段代码使用嵌套的 np.where 公式

df3['TEST'] = np.where( (df3['IN'] == 1) & (df3['200D_MA'] == 1),1,\
np.where( (df3['TEST'].shift(-1) == 1)\
& (df3['200D_MA'] == 1),1,0))

但它会抛出一个 KeyError: 'IN' > 大概是因为我正在使用尚未创建的列中的条件。谁能帮我弄清楚如何做到这一点?

最佳答案

看来你需要条件 ffill

df['TEST']=df.loc[df.IN==1,'IN']
df.loc[df['200D_MA']==1,'TEST']=df.loc[df['200D_MA']==1,'TEST'].ffill()
df.fillna(0,inplace=True)
df.TEST=df.TEST.astype(int)
df
Out[349]:
DATE IN 200D_MA TEST
0 10/30/2013 0 1 0
1 10/31/2013 0 1 0
2 11/1/2013 1 1 1
3 11/4/2013 0 1 1
4 11/5/2013 0 1 1
5 11/6/2013 0 1 1
6 11/7/2013 0 1 1
7 11/8/2013 0 1 1
8 11/11/2013 0 0 0

关于python - 根据当前列中的值在 Pandas 中的 np.where 上创建条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50181390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com