2 回答

TA貢獻1719條經(jīng)驗 獲得超6個贊
嘗試:
df["year_diff"]=df["end"].dt.year.sub(df["start"].df.year)
df["month_diff"]=df["end"].dt.month.sub(df["start"].df.month)

TA貢獻1802條經(jīng)驗 獲得超5個贊
此解決方案假定構成一年 (365) 和一個月 (30) 的天數(shù)是恒定的。如果日期時間是字符串,請將它們轉換為日期時間對象。在熊貓數(shù)據(jù)幀中,這可以像這樣完成
def to_datetime(dataframe):
new_dataframe = pd.DataFrame()
new_dataframe[0] = pd.to_datetime(dataframe[0], format="%Y-%m-%d")
new_dataframe[1] = pd.to_datetime(dataframe[1], format="%Y-%m-%d")
return new_dataframe
接下來,可以從列 0 中減去列 1 以給出天數(shù)差。我們可以使用運算符將此數(shù)字除以 365,以獲得整年數(shù)。我們可以使用運算符獲取剩余天數(shù),并使用運算符將其除以 30,得到整個月數(shù)。//%//
def get_time_diff(dataframe):
dataframe[2] = dataframe[1] - dataframe[0]
diff_dataframe = pd.DataFrame(columns=["year_diff", "month_diff"])
for i in range(0, dataframe.index.stop):
year_diff = dataframe[2][i].days // 365
month_diff = (dataframe[2][i].days % 365) // 30
diff_dataframe.loc[i] = [year_diff, month_diff]
return diff_dataframe
使用這些函數(shù)的示例輸出是
start end days_diff year_diff month_diff
0 2019-10-15 2021-08-11 666 days 1 10
1 2020-02-11 2022-10-13 975 days 2 8
2 2018-12-17 2020-09-16 639 days 1 9
3 2017-01-03 2017-01-28 25 days 0 0
4 2019-12-21 2022-03-10 810 days 2 2
5 2018-08-08 2019-05-07 272 days 0 9
6 2017-06-18 2020-08-01 1140 days 3 1
7 2017-11-14 2020-04-17 885 days 2 5
8 2019-08-19 2020-05-10 265 days 0 8
9 2018-05-05 2020-09-08 857 days 2 4
注意:這將給出整年和月的數(shù)目。因此,如果剩下29天,一個月短一天,這將不計算在內。
添加回答
舉報