Python 3.x 如何在Dataframe中使用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

我试图根据下一行中的值调整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     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']