2015-07-23 4 views
5

पर व्यावसायिक दिन जोड़ना मुझे डेटाफ्रेम में मौजूदा कॉलम में सूचीबद्ध तिथियों में व्यावसायिक दिन जोड़ने की आवश्यकता है। कॉलम में डेटा डेटाटाइम 64 [एनएस] प्रकार में है। Business days in Python से सुझावों का उपयोग करके, मैंने नीचे सूचीबद्ध कोड का प्रयास किया।डेटाटाइम कॉलम

import datetime 
from pandas.tseries.offsets import BDay 

df['Math Admin Date'] + BDay(1) 

मैं निम्नलिखित त्रुटि संदेश मिला:

TypeError: cannot use a non-absolute DateOffset in datetime/timedelta operations [<BusinessDay>] 

मैं अपने datetime स्तंभ के लिए व्यावसायिक दिनों के जोड़ सकते हैं?

+0

हमें यह देखने की ज़रूरत है कि 'df [' Math Admin Date '] कहां से आ रहा है। –

उत्तर

4

दुर्भाग्य ऑफसेट वस्तुओं की तरह सरणी का उपयोग कर आपरेशन का समर्थन नहीं करते तो आप apply प्रत्येक तत्व के लिए ऑफसेट करने के लिए है:

In [208]: 
import datetime as dt 
from pandas.tseries.offsets import BDay 
​ 
df = pd.DataFrame({'Math Admin Date':pd.date_range(start=dt.datetime(2015,6,1), end = dt.datetime(2015,6,30))}) 
df['Math Admin Date'].apply(lambda x: x + BDay(1)) 

Out[208]: 
0 2015-06-02 
1 2015-06-03 
2 2015-06-04 
3 2015-06-05 
4 2015-06-08 
5 2015-06-08 
6 2015-06-08 
7 2015-06-09 
8 2015-06-10 
9 2015-06-11 
10 2015-06-12 
11 2015-06-15 
12 2015-06-15 
13 2015-06-15 
14 2015-06-16 
15 2015-06-17 
16 2015-06-18 
17 2015-06-19 
18 2015-06-22 
19 2015-06-22 
20 2015-06-22 
21 2015-06-23 
22 2015-06-24 
23 2015-06-25 
24 2015-06-26 
25 2015-06-29 
26 2015-06-29 
27 2015-06-29 
28 2015-06-30 
29 2015-07-01 
Name: Math Admin Date, dtype: datetime64[ns] 

एक Timedelta का उपयोग करते हुए काम करेगा, लेकिन इस कार्य दिवस इस समय का समर्थन नहीं करता:

df['Math Admin Date'] + pd.Timedelta(1,'D') 
+0

सुझाव के लिए धन्यवाद! यह काम करता है, लेकिन मैं अलग-अलग कॉलम में विभिन्न दिनों के व्यावसायिक दिनों को जोड़ने की योजना बना रहा हूं, और मुझे आश्चर्य है कि यह एक अज्ञात फ़ंक्शन का उपयोग करने के बजाए कई तर्कों के साथ एक फ़ंक्शन बनाना संभव है। उदाहरण के लिए def add_busdays (df.column, जोड़ने के लिए व्यावसायिक दिनों की संख्या)। – BGreen

+0

हां यह सिर्फ 'def func (x, num_days = 1) में परिवर्तित होगा: x + BDay (num_days)' और फिर इसे अपने कॉलम पर कॉल करें: 'df [' column ']। लागू करें (lambda x: func (x , some_num)) ' – EdChum

संबंधित मुद्दे