我有以下代碼片段:
ls3['REP'] = pd.to_datetime(ls3['REP']).dt.to_period('M')
ls3['month'] = pd.to_datetime(ls3['month']).dt.to_period('M')
ls3['MonthsBetween'] = ls3['REP']-ls3['month']
所以 rep 是一列值,例如 2022-05,month 的格式也是 YYYY-MM。我想要一個列,它以整數形式給出差值。
因此,如果我的 rep 列是 2022-05 而我的月份列是 2022-01,那么差值應該是 4。上面的方法<month-end>在每一行中都給我一個輸出。
我也試過
ls3["MonthsBetween"] = (ls3['REP']-ls3["month"])/np.timedelta64(1, "M")
因此,我沒有將完整日期 2022-05-01 變成 2022-05,而是減去 2022-05-01 - 2022-01-20 并將其轉換為一個月然后四舍五入。四舍五入會導致問題,因為我不在乎兩者之間有多少天,我真的只想減去兩個月的值。
uj5u.com熱心網友回復:
IIUC,您不必覆寫現有列,執行計算并直接分配:
ls3['MonthsBetween'] = (pd.to_datetime(ls3['REP']).dt.to_period('M')
-pd.to_datetime(ls3['month']).dt.to_period('M')
)
如果你想要整數:
ls3['MonthsBetween'] = (pd.to_datetime(ls3['REP']).dt.to_period('M').astype(int)
-pd.to_datetime(ls3['month']).dt.to_period('M').astype(int)
)
輸出:
REP month MonthsBetween
0 2022-05-01 2022-01 4
使用的輸入:
ls3 = pd.DataFrame({'REP': ['2022-05-01'], 'month': ['2022-01']})
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/534484.html
下一篇:如何根據上個月的日期列移動熊貓列
