是否有一种(更)方便/有效的方法来使用 pandas 计算日期之间的工作日数?
我可以做到
len(pd.bdate_range(start='2018-12-03',end='2018-12-14'))-1 # minus one only if end date is a business day
但是对于开始日和结束日之间的距离较长,这似乎效率相当低。
有一些关于如何使用 BDay
偏移对象的建议,但它们似乎都涉及日期范围或类似内容的创建。
我更多地考虑以工作日表示的 Timedelta 对象。
假设我有两个包含日期时间的系列,s1
和 s2
。如果 Pandas 有类似的东西
s1.dt.subtract(s2,freq='B')
# giving a new series containing timedeltas where the number of days calculated
# use business days only
那就太好了。
(numpy 有一个 busday_count()
方法。但我不想将 pandas 时间戳转换为 numpy,因为这会变得困惑。)
最佳答案
我认为np.busday_count
这是个好主意,也不需要转换为 numpy 数组:
s1 = pd.Series(pd.date_range(start='05/01/2019',end='05/10/2019'))
s2 = pd.Series(pd.date_range(start='05/04/2019',periods=10, freq='5d'))
s = pd.Series([np.busday_count(a, b) for a, b in zip(s1, s2)])
print (s)
0 3
1 5
2 7
3 10
4 14
5 17
6 19
7 23
8 25
9 27
dtype: int64
关于python - 使用 pandas 的工作日数之间的日期时间差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56272430/