【发布时间】:2021-12-29 16:56:22
【问题描述】:
我有一个如下所示的 df,其中包含更多行:
| LastTravelDate | TripStartDate | TripEndDate |
|---|---|---|
| 2021-07-10 | 2021-08-16 | NaT |
| 2021-08-28 | 2021-09-30 | NaT |
| 2021-07-29 | 2021-09-27 | 2021-09-28 |
我正在尝试编写一个循环,该循环遍历 df 中的每一行并将 LastTravelDate 的第 i 个值设置为 TripEndDate 的第 i 个值。只要 TripEndDate 等于 NaT,我希望脚本将 LastTravelDate 的第 i 个值设置为 TripStartDate 中的相应值。
我的问题是代码似乎忽略了 if/else 语句中的所有细节,只是将所有 df.LastTravelDate 设置为等于 df.TripStartDate。应该发生的是 df.LastTravelDate 和 df.TripStartDate 仅在 df.TripEndDate 为空时相等。但是,这些在任何情况下都相等。以下是我正在使用的完整代码。
for i in range(df.shape[0]):
if np.any(df.loc[df.TripEndDate.isna()]):
df["LastTravelDate"][i] = df.TripStartDate[i]
else:
df["LastTravelDate"][i] = df.TripEndDate[i]
谢谢
【问题讨论】:
标签: python pandas numpy if-statement