Skip to content

Commit e4f5b6b

Browse files
committed
Added parameter origin to to_datetime
1 parent b54a905 commit e4f5b6b

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

pandas/tseries/tools.py

+11-5
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ def _guess_datetime_format_for_array(arr, **kwargs):
182182
mapping={True: 'coerce', False: 'raise'})
183183
def to_datetime(arg, errors='raise', dayfirst=False, yearfirst=False,
184184
utc=None, box=True, format=None, exact=True, coerce=None,
185-
unit='ns', infer_datetime_format=False):
185+
unit='ns', infer_datetime_format=False, origin=None):
186186
"""
187187
Convert argument to datetime.
188188
@@ -219,11 +219,13 @@ def to_datetime(arg, errors='raise', dayfirst=False, yearfirst=False,
219219
exact : boolean, True by default
220220
- If True, require an exact format match.
221221
- If False, allow the format to match anywhere in the target string.
222-
unit : unit of the arg (D,s,ms,us,ns,julian) denote the unit in epoch
222+
unit : unit of the arg (D,s,ms,us,ns) denote the unit in epoch
223223
(e.g. a unix timestamp), which is an integer/float number.
224224
infer_datetime_format : boolean, default False
225225
If no `format` is given, try to infer the format based on the first
226226
datetime string. Provides a large speed-up in many cases.
227+
origin : datetime.date, default None
228+
Equivalent to origin parameter of as.date in R Statistical Package
227229
228230
Returns
229231
-------
@@ -271,10 +273,14 @@ def to_datetime(arg, errors='raise', dayfirst=False, yearfirst=False,
271273
>>> pd.to_datetime('13000101', format='%Y%m%d', errors='coerce')
272274
NaT
273275
"""
274-
if unit == 'julian':
276+
277+
if origin is not None:
278+
import datetime
275279
from pandas.core.api import Timestamp
276-
unit = 'D'
277-
arg = arg - Timestamp(0).to_julian_date()
280+
if origin == 'julian':
281+
arg = arg - Timestamp(0).to_julian_date()
282+
elif isinstance(origin, datetime.date):
283+
arg = arg + Timestamp(origin).to_julian_date() - Timestamp(0).to_julian_date()
278284

279285
return _to_datetime(arg, errors=errors, dayfirst=dayfirst, yearfirst=yearfirst,
280286
utc=utc, box=box, format=format, exact=exact,

0 commit comments

Comments
 (0)