基于Python中下一行的阈值的新列
我有一个pandas dataframe列,如下所示:基于Python中下一行的阈值的新列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个pandas dataframe列,如下所示: col1 200 300 400 200 500 700 0 0 60 0 0 我正在尝试创建一个新列,该列是根据当前行值确定的,但也要考虑接下来的几行值。例如,如果(第1列(i)>60)和(第1列(i+1)+第1列(i+2)+第1列(i+3))>100,则在第2列中填写“是” col1 col2 200 yes 300
col1
200
300
400
200
500
700
0
0
60
0
0
我正在尝试创建一个新列,该列是根据当前行值确定的,但也要考虑接下来的几行值。例如,如果(第1列(i)>60)和(第1列(i+1)+第1列(i+2)+第1列(i+3))>100,则在第2列中填写“是”
col1 col2
200 yes
300 yes
400 yes
200 yes
500 yes
700 yes
0 no
0 no
60 no
0 no
0 no
关于如何实现这一点有什么想法吗?您可以使用
.shift()
方法在数据帧中处理这一点。请参考此示例
这里有一种方法使用zip
和list
:
l1 = df['col1'].tolist()
l2 = []
for a,b,c,d in zip(l1,l1[1:],l1[2:],l1[3:]):
if a>60 & (b+c+d)>100:
l2 += ['yes']
else:
l2 += ['no']
l2 += ['','',''] # cater for the last 3 entries. I've left it blank, you can decide whether to go for 'yes' or 'no' or 'NA'
df['col2']= pd.Series(l2)
这对我的分析很有帮助!它有点通用,所以我可以很容易地将它应用到其他场景中。非常感谢。