python - 使用 pandas 的工作日数之间的日期时间差异

标签 python pandas timedelta

是否有一种(更)方便/有效的方法来使用 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 对象。

假设我有两个包含日期时间的系列,s1s2。如果 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/

相关文章:

python - 使用 Django 将 Unicode 子类存储到 MySQL

python - Pandas:根据其他行的值删除行

python - 如何使用 wsgiref.simple_server 覆盖服务器版本字符串?

Python FuzzyWuzzy比率: how does it work?

python - 在 Pandas 数据框上一起应用过滤器并替换同一列

python - 根据模式过滤 pandas 系列

python - 如何将数据框插入 Pandas 中的数据框

python - 减去从字符串转换的日期时间时,total_seconds() 是错误的

python - Pandas 将时间列添加到日期索引

python - datetime.timedelta 返回意外结果?