在python中,计算存储在列中的两个日期之间的差值(不包括星期日)?

2024-10-03 19:31:24 发布

您现在位置:Python中文网/ 问答频道 /正文

df.head(3)
Out[20]: 
  First_date Second_date
0 2021-09-18  2021-09-17
1 2021-09-22  2021-09-17
2 2021-09-27  2021-09-17

我已经计算了两个date_栏之间的差异,但我只想从日期中排除周日,现在我已经计算了他整整一周的时间

df["First_date"] = df['First_date'].astype('datetime64[ns]')
df["Second_date"] = df['Second_date'].astype('datetime64[ns]')
df["days"] = df["First_date"].sub(df ["Second_date"],axis=0)

df.head(3)
Out[20]: 
  First_date Second_date days
0 2021-09-18  2021-09-17  1
1 2021-09-22  2021-09-17  5
2 2021-09-27  2021-09-17  10

df.head(3)
Out[20]: 
  First_date Second_date days expected_outcome
0 2021-09-18  2021-09-17  1    1
1 2021-09-22  2021-09-17  5    4
2 2021-09-27  2021-09-17  10   8

到现在为止,我是这样计算天数的。谢谢你的帮助:)


Tags: dfdate时间差异outdaysheadfirst
2条回答

尝试:

df["First_date"] = pd.to_datetime(df["First_date"])
df["Second_date"] = pd.to_datetime(df["Second_date"])
df['diff'] = df.apply(lambda x: len(pd.bdate_range(x['Second_date'], x['First_date'], freq="C", weekmask="Mon Tue Wed Thu Fri Sat", closed='right')), axis=1)
print(df)

输出:

  First_date Second_date  diff
0 2021-09-18  2021-09-17     1
1 2021-09-22  2021-09-17     4
2 2021-09-27  2021-09-17     8

尝试:

df["First_date"] = pd.to_datetime(df["First_date"])
df["Second_date"] = pd.to_datetime(df["Second_date"])

sundays = df.apply(lambda x: len(pd.date_range(x["Second_date"], x["First_date"], freq="W-SUN")), axis=1)
df["days"] = (df["First_date"]-df["Second_date"]).dt.days-sundays

>>> df
  First_date Second_date  days
0 2021-09-18  2021-09-17     1
1 2021-09-22  2021-09-17     4
2 2021-09-27  2021-09-17     8

相关问题 更多 >