Python 3.x 如何在Dataframe中使用if语句调整日期值
我试图根据下一行中的值调整pandas数据框中的日期值,但常规的if语句似乎不起作用。我当前的表如下所示:Python 3.x 如何在Dataframe中使用if语句调整日期值,python-3.x,Python 3.x,我试图根据下一行中的值调整pandas数据框中的日期值,但常规的if语句似乎不起作用。我当前的表如下所示: ID StartDate EndDate 11025 2017-05-29 NaN 11025 2017-09-25 2017-11-10 11025 2017-11-10 NaN 13587 2017-06-12 2017-08-14 13587 2017-08-15
ID StartDate EndDate
11025 2017-05-29 NaN
11025 2017-09-25 2017-11-10
11025 2017-11-10 NaN
13587 2017-06-12 2017-08-14
13587 2017-08-15 2017-09-25
如果查看第二行,其结束日期与下一行的开始日期重叠。我要做的是创建另一个名为“Adjusted End Date”的列,如果下一行的EndDate>=StartDate,则Adjusted End Date将是下一行的StartDate-1天。如果结束日期与下一个开始日期不重叠,则调整后的结束日期将与结束日期相同
ID StartDate EndDate Adjusted_End_Date
11025 2017-05-29 NaN NaN
11025 2017-09-25 2017-11-10 2017-11-09
11025 2017-11-10 NaN NaN
13587 2017-06-12 2017-08-14 2017-08-14
13587 2017-08-15 2017-09-25 2017-09-25
我很累,但没用。它给了我一条错误消息,说“序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。”另外,我不确定这是否是从结束日期减去1天的正确方法
df["Adjusted End Date"] = ''
df['Next_Id'] = df['Id Number'].shift(-1)
df['Next_Start'] = df['StartDate'].shift(-1)
if df['EndDate'] >= df['Next_Start'] and df['ID'] == df['Next_Id']:
df['Adjusted End Date']=df['Acting End Date'].map(lambda x: (x-timedelta(1)).strftime('%m/%d/%Y'))
else:
df['Adjusted End Date']=df['EndDate']