我有一个数据帧(currentQuarter
),看起来像
CODE SIP ... STATUS STATUS_CHANGE_DATE
0 AA YES ... CURRENT 2019-01-01
1 AA YES ... LEAVER 2019-02-05
2 AA YES ... LEAVER 2019-09-03
3 AA YES ... JOINER 2019-01-05
4 AA YES ... CURRENT 2019-03-08
我正在尝试将任何记录的STATUS
更改为CURRENT
,其中STATUS
不是CURRENT
,而STATUS_CHANGE_DATE
是在将来。因此在本例中,referencePeriodStartDate
是2019-07-25。这意味着第三个记录STATUS
字段将更改为CURRENT
:
CODE SIP ... STATUS STATUS_CHANGE_DATE
0 AA YES ... CURRENT 2019-01-01
1 AA YES ... LEAVER 2019-02-05
2 AA YES ... CURRENT 2019-09-03
3 AA YES ... JOINER 2019-01-05
4 AA YES ... CURRENT 2019-03-08
我可以过滤df
来创建查询来查找记录,但是我无法获得where
语句来更改受影响的记录
referencePeriodStartDate = datetime.datetime.strptime(referenceDate , '%d/%m/%Y')
not_current = currentQuarter['STATUS'].isin(leaverList)
currentQuarter['STATUS_CHANGE_DATE'] = pd.to_datetime(currentQuarter['STATUS_CHANGE_DATE'], errors='coerce')
currentQuarter['STATUS_CHANGE_DATE'].dt.strftime('%d/%m/%Y')
referenceError = currentQuarter['STATUS_CHANGE_DATE'] > referencePeriodStartDate
currentQuarter['STATUS'] = np.where(not_current & referenceError, "CURRENT", currentQuarter['STATUS'])
如果有人能给我一个关于where
语句的指针,我将不胜感激
谢谢
您可以检查
STATUS_CHANGE_DATE
中哪些日期大于今天的日期,并使用结果对数据帧进行索引,并相应地将STATUS
设置为CURRRENT
:相关问题 更多 >
编程相关推荐