我有一个数据帧df
,头部看起来像:
BB DATE PX
0 1333 JP 2014-03-04 471300.0
1 1333 JP 2014-04-04 132900.0
2 1333 JP 2014-04-07 150400.0
3 1333 JP 2014-04-13 191900.0
4 2345 JP 2014-04-14 218900.0
我想创建一个名为sayFLAG
的新列,它是使用2个条件设置的
1.查看名为BB
的列,对每一行取当前值,回顾前一天并比较值。如果值相同
以及
DATE
和昨天日期之间的绝对差大于3然后设置FLAG
=1,否则设置FLAG
=0
因此,在本例中,新的标志列如下所示
BB DATE PX FLAG
0 1333 JP 2014-03-04 471300.0 0
1 1333 JP 2014-04-04 132900.0 1
2 1333 JP 2014-04-07 150400.0 0
3 1333 JP 2014-04-13 191900.0 1
4 2345 JP 2014-04-14 218900.0 0
如果index=1,则可以看到该行和前一行的BB
值相同,但两行的DATE
之间的绝对差值大于3。如果index=3,则情况相同
我试过:
if df.BB.shift(1) = df.BB.shift(0) & abs(df.DATE.shift(1) - df.DATE.shift(0)) >3 :
df['FLAG'] = 1
else:
df['FLAG'] = 0
但不能让它工作
假设您的
DATE
列是datetime对象,一行:输出:
相关问题 更多 >
编程相关推荐