1 回答

TA貢獻1802條經驗 獲得超4個贊
我認為您可以使用 pandas apply函數,它允許您在數據幀的每一行(或列)上運行任意函數。
例如:
def count_missed_apts_before_now(row, df):
subdf = df.query("AppointmentDay<@row.ScheduledDay and `No-show`=='Yes' and [email protected]")
return len(subdf)
missed_apt_counts = df.apply(count_missed_apts_before_now, axis=1, args = (df,))
在這里,我定義了一個函數count_missed_apts_before_now(),該函數將單行和完整數據幀作為輸入。它用于df.query為當前患者制作一個較小的 df,僅包含不顯示行,其中 AppointmentDay 早于當前 ScheduledDay 值(“當前”是指 apply 函數正在處理的行的值)。然后我們可以計算向下選擇的數據幀的長度并返回它。該apply方法對每一行執行此操作,并將結果組合成一個系列。
注意:apply不一定很快,盡管您可以使用%%timeit魔法將其與 for 循環進行比較。
另外,檢查是否需要將 ScheduledDay 時間戳轉換為純日期,因為所有 AppointmentDay 值似乎都只是日期(即全部在 00:00 點),并且在某些情況下,ScheduledDay 在同一天具有較晚的時間戳。
添加回答
舉報