我试图通过添加新的date_difference列来获取两个日期列之间的工作日。
我尝试了什么?
bd = workday(ll.date_done,ll.order_date, cal)
bd = networkdays(ll.date_done,ll.order_date, cal)
km = np.busday_count(dd.date(), od.date(), holidays = cal)
我遇到的错误。
'系列'对象没有属性'天'
我想做什么。
# Table Name: ll
order_date date_done
2017-04-09 2017-04-16
2017-04-09 2017-04-18
2017-04-10 2017-04-20
我期待的是:
order_date date_done Date_Difference
2017-04-09 2017-04-16 4
2017-04-09 2017-04-18 7
2017-04-10 2017-04-20 6
我正在做什么计算?
我有假期列表,不包括哪些我试图从两个日期获得营业日差异。上面的date_difference计算只是虚拟数字。
答案 0 :(得分:2)
如果您传递正确的类型,则可以使用numpy.bus_daycount()
:
<强>代码:强>
df['date_diff'] = np.busday_count(
df.order_date.values.astype('datetime64[D]'),
df.date_done.values.astype('datetime64[D]'))
测试代码:
import pandas as pd
import numpy as np
from io import StringIO
df = pd.read_fwf(StringIO(u"""
order_date date_done
2017-04-09 2017-04-16
2017-04-09 2017-04-18
2017-04-10 2017-04-20"""), header=1)
df.order_date = pd.to_datetime(df.order_date, infer_datetime_format=True)
df.date_done = pd.to_datetime(df.date_done, infer_datetime_format=True)
df['date_diff'] = np.busday_count(
df.order_date.values.astype('datetime64[D]'),
df.date_done.values.astype('datetime64[D]'))
print(df)
<强>结果:强>
order_date date_done date_diff
0 2017-04-09 2017-04-16 5
1 2017-04-09 2017-04-18 6
2 2017-04-10 2017-04-20 8