2017-05-10 1 views
1

새로운 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) 

내가 받고있는 오류.

'Series' object has no attribute 'days'

내가하려는 일.

# 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 계산은 단지 더미 숫자입니다.

답변

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) 

결과 :

,451,515,
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 
+0

그것은 나를 위해 작동하지만 나는 또한 다음과 같은 사용자 지정 공휴일 목록이 있습니다 >>> custom_holidays = holidays.HolidayBase() >>> custom_holidays.append ([ "2000-01-01", " 2035-01-01 ", "2014-01-20 "] >>> cal = 캘린더 (custom_holidays, [Sunday, 'Saturday']) 차이를 계산하는 동안 포함해야하는 캘린더. 오류 : >>> up [ 'date_diff'] = np.busday_count ( up.order_date.values.astype ('datetime64 [D]'), up.date_done.values.astype ('datetime64 [D]'), holidays = cal) 오류 : 개체를 NumPy datetime으로 변환 할 수 없습니다. –

+0

"cal"은 일정 개체입니다. –

관련 문제