我在同一個資料幀(df)中有日期列(Dtype = datetime64[ns])和整數列(Dtype = Int16)。整數列的值都在 20 到 100 之間。
我想創建一個新的日期列,即日期列減去整數列,即 df:
重復日期 | 年齡 | 修訂日期(待計算)
19 年 1 月 1 日 | 20 | 99
年 1 月 1 日 22 年 4 月 2 日 | 50 | 72 年 4 月 2 日
到目前為止,我已經嘗試過:
df['RevisedDate'] = df['RepDate'] - pd.DateOffset(years= df['Age'])
但我得到一個 TypeError: cannot convert the series to <class 'int'>
我也嘗試過解構并重新組合:
df['YofRevDate'] = pd.DatetimeIndex(df['RepDate']).year - df['Age']
df['MofRevDate'] = pd.DatetimeIndex(df['RepDate']).month
df['DofRevDate'] = pd.DatetimeIndex(df['RepDate']).day
df['RevisedDate'] = date(df['YofRevDate'], df['MofRevDate'], df['DofRevDate'])
但我在最后一行得到了同樣的錯誤。
你的幫助將非常重要
uj5u.com熱心網友回復:
要實作這一點,您有兩種方法:
- 將 Age 轉換為類似 timedelta in years(最近的 pandas 版本不支持),并將 timedelta 添加到日期列
- 決議日期列,進行年齡計算,創建新的日期列
我不確定我的解決方案有多快(第二種選擇):
new_year = (df.RepDate.dt.year df.Age).astype(str)
month_day = df.RepDate.dt.month.astype(str) "-" df.RepDate.dt.day.astype(str)
df['NewRepDate'] = pd.to_datetime(new_year "-" month_day,format="%Y-%m-%d")
df
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/411006.html
標籤:
