亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python - 錨定日期的日期差異

Python - 錨定日期的日期差異

www說 2023-03-30 10:09:48
我試圖找到我的錨定日期和按 ID 分組的其他日期之間的日期差異。輸入ID  Date        Anchor Date123 1/5/2018    N123 4/10/2018   N123 5/8/2018    Y123 10/12/2018  N234 1/4/2018    N234 1/4/2018    N234 1/4/2018    Y456 5/6/2018    N456 5/6/2018    N456 5/10/2018   N456 6/1/2018    Y567 3/2/2018    N567 3/2/2018    N567 3/2/2018    Y預期輸出:ID  Date        Anchor Date Diff123 1/5/2018    N           -123         123 4/10/2018   N           -28123 5/8/2018    Y            0123 10/12/2018  N            157234 1/4/2018    N            0234 1/4/2018    N            0234 1/4/2018    Y            0456 5/6/2018    N           -26456 5/6/2018    N           -26456 5/10/2018   N           -22456 6/1/2018    Y            0567 3/2/2018    N            0567 3/2/2018    N            0567 3/2/2018    Y            0代碼嘗試import pandas as pddf = pd.read_csv()df['Date'] = df.groupby('ID')['Date'].apply(lambda x: x.sort_values())df['diff'] = df.groupby('ID')['Date'].diff() / np.timedelta64(1, 'D')df['diff'] = df['diff'].fillna(0)我收到的錯誤是“插入列的索引與框架索引不兼容”。其次,我不確定如何合并錨定日期列以確保將其用于時間零。
查看完整描述

1 回答

?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

首先你需要轉換Date成datetime類型:


df['Date'] = pd.to_datetime(df['Date'])

之后,可以提取Anchor Datewith的索引idxmax,然后用于loc提取實際日期:


idx = df['Anchor Date'].eq('Y').groupby(df['ID']).transform('idxmax')

df['Diff'] = (df['Date'] - df.loc[idx, 'Date'].values) / np.timedelta64(1, 'D')

另一種方法是使用布爾索引提取那些日期,然后映射:


anchor_dates = df.loc[df['Anchor Date']=='Y', ['ID','Date']].set_index('ID')['Date']


df['Diff'] = (df['Date'] - anchor_dates)/np.timedelta64(1, 'D')

輸出:


     ID       Date Anchor Date   Diff

0   123 2018-01-05           N -123.0

1   123 2018-04-10           N  -28.0

2   123 2018-05-08           Y    0.0

3   123 2018-10-12           N  157.0

4   234 2018-01-04           N    0.0

5   234 2018-01-04           N    0.0

6   234 2018-01-04           Y    0.0

7   456 2018-05-06           N  -26.0

8   456 2018-05-06           N  -26.0

9   456 2018-05-10           N  -22.0

10  456 2018-06-01           Y    0.0

11  567 2018-03-02           N    0.0

12  567 2018-03-02           N    0.0

13  567 2018-03-02           Y    0.0


查看完整回答
反對 回復 2023-03-30
  • 1 回答
  • 0 關注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號