如何計算兩個之前間相差的月數

如何計算兩個之前間相差的月數

import pandas as pd

獲取數據

使用以下模擬數據來演示計算兩個之前間相差的月數。

df = pd.read_csv('./打卡記錄.csv')
df
姓名 日期 打卡記錄
0 張三 2022/1/5 上班
1 張三 2022/2/10 上班
2 張三 2022/1/18 請假
3 張三 2022/5/22 上班
4 張三 2022/9/28 上班

獲取上班的打卡記錄數據

# 獲取上班的打卡記錄數據
df = df[df['打卡記錄'] == '上班'].sort_values(by=['日期'])
df
姓名 日期 打卡記錄
0 張三 2022/1/5 上班
1 張三 2022/2/10 上班
3 張三 2022/5/22 上班
4 張三 2022/9/28 上班

方法一

date1 = pd.to_datetime(df['日期'].shift(), format='%Y-%m-%d').dt.to_period('M')
date2 = pd.to_datetime(df['日期'], format='%Y-%m-%d').dt.to_period('M')
df['相差月數—1'] =  (date2 - date1).apply(lambda x: x if pd.isnull(x) else x.n)
df
姓名 日期 打卡記錄 相差月數—1
0 張三 2022/1/5 上班 NaT
1 張三 2022/2/10 上班 1
3 張三 2022/5/22 上班 3
4 張三 2022/9/28 上班 4
df['相差月數—1']
0    NaT
1      1
3      3
4      4
Name: 相差月數—1, dtype: object

方法二

date1 = pd.to_datetime(df['日期'].shift(), format='%Y-%m-%d')
date2 = pd.to_datetime(df['日期'], format='%Y-%m-%d')
df['相差月數—2'] = (date2.dt.year - date1.dt.year) * 12 + (date2.dt.month - date1.dt.month)
df
姓名 日期 打卡記錄 相差月數—1 相差月數—2
0 張三 2022/1/5 上班 NaT NaN
1 張三 2022/2/10 上班 1 1.0
3 張三 2022/5/22 上班 3 3.0
4 張三 2022/9/28 上班 4 4.0
df['相差月數—2']
0    NaN
1    1.0
3    3.0
4    4.0
Name: 相差月數—2, dtype: float64
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章