我有一個 df 看起來像下面有更多的行:
| 上次旅行日期 | 行程開始日期 | 行程結束日期 |
|---|---|---|
| 2021-07-10 | 2021-08-16 | 鈉鹽 |
| 2021-08-28 | 2021-09-30 | 鈉鹽 |
| 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]
謝謝
uj5u.com熱心網友回復:
對于矢量化方法,您可以使用np.where():
df['LastTravelDate'] = np.where(df['TripEndDate'].isna(),df['TripStartDate'],df['TripEndDate'])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/361986.html
