第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

以矢量化形式(pandas)計(jì)算一列中的日期早于另一列中的日期(加上附加條件)的行

以矢量化形式(pandas)計(jì)算一列中的日期早于另一列中的日期(加上附加條件)的行

喵喵時(shí)光機(jī) 2023-12-09 15:46:43
我有一個(gè)來(lái)自 Kaggle 的數(shù)據(jù)集,其中包含醫(yī)療預(yù)約數(shù)據(jù)。有一個(gè)預(yù)約日期 (ScheduledDay) 和一個(gè)預(yù)約日期 (AppointmentDay)。還有患者ID,許多患者進(jìn)行了多次預(yù)約以及是否出現(xiàn)。我想對(duì)相同的患者和他們沒(méi)有出現(xiàn)的地方(缺席==“是”)進(jìn)行累積計(jì)數(shù)之類的事情,但僅限于在預(yù)約時(shí)已經(jīng)發(fā)生的缺席。這是我的代碼,用于計(jì)算每個(gè)患者的預(yù)訂數(shù)量,沒(méi)問(wèn)題df.sort_values(by='ScheduledDay', inplace=True)df['book_count'] = df.groupby('PatientId').cumcount()但對(duì)于我的問(wèn)題,我不知道如何讓它變得如此整潔。我已經(jīng)完成了,但它沒(méi)有矢量化,需要循環(huán)遍歷行。不用說(shuō)這需要很長(zhǎng)時(shí)間final_index = df.index.tolist()[-1]df['miss_count'] = np.NaNfor i in df['ScheduledDay'].iteritems():    print(f'{final_index} -- {i[0]}')    patient = df.loc[i[0], 'PatientId']    count = df.loc[        (df['AppointmentDay'] < i[1])        & (df['No-show'] == 'Yes')        & (df['PatientId'] == patient)].shape[0]    df.loc[i[0], 'miss_count']  = count    print(f'\n{count}\n')所以在這種情況下我沒(méi)有使用 cumcount 因?yàn)槲也恢廊绾蝺H過(guò)濾之前發(fā)生的日期然后會(huì)有一欄顯示患者已預(yù)約但在當(dāng)前預(yù)約之前未出現(xiàn)的次數(shù)。
查看完整描述

1 回答

?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊

我認(rèn)為您可以使用 pandas apply函數(shù),它允許您在數(shù)據(jù)幀的每一行(或列)上運(yùn)行任意函數(shù)。


例如:


def count_missed_apts_before_now(row, df):

    subdf = df.query("AppointmentDay<@row.ScheduledDay and `No-show`=='Yes' and PatientId==@row.PatientId")

    return len(subdf)

    

missed_apt_counts = df.apply(count_missed_apts_before_now, axis=1, args = (df,))

在這里,我定義了一個(gè)函數(shù)count_missed_apts_before_now(),該函數(shù)將單行和完整數(shù)據(jù)幀作為輸入。它用于df.query為當(dāng)前患者制作一個(gè)較小的 df,僅包含不顯示行,其中 AppointmentDay 早于當(dāng)前 ScheduledDay 值(“當(dāng)前”是指 apply 函數(shù)正在處理的行的值)。然后我們可以計(jì)算向下選擇的數(shù)據(jù)幀的長(zhǎng)度并返回它。該apply方法對(duì)每一行執(zhí)行此操作,并將結(jié)果組合成一個(gè)系列。


注意:apply不一定很快,盡管您可以使用%%timeit魔法將其與 for 循環(huán)進(jìn)行比較。


另外,檢查是否需要將 ScheduledDay 時(shí)間戳轉(zhuǎn)換為純?nèi)掌?,因?yàn)樗?AppointmentDay 值似乎都只是日期(即全部在 00:00 點(diǎn)),并且在某些情況下,ScheduledDay 在同一天具有較晚的時(shí)間戳。


查看完整回答
反對(duì) 回復(fù) 2023-12-09
  • 1 回答
  • 0 關(guān)注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)