Skip to content

Commit 05a9973

Browse files
committed
TST: Added tests for origin paramters
1 parent 8651285 commit 05a9973

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

pandas/tseries/tests/test_timeseries.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -772,6 +772,67 @@ def test_to_datetime_unit(self):
772772
result = to_datetime([1, 2, 111111111], unit='D', errors='coerce')
773773
tm.assert_index_equal(result, expected)
774774

775+
def test_to_datetime_origin(self):
776+
units = ['D', 's', 'ms', 'us', 'ns']
777+
# Addresses Issue Number 11276, 11745
778+
# for origin as julian
779+
julian_dates = pd.date_range(
780+
'2014-1-1', periods=10).to_julian_date().values
781+
result = Series(pd.to_datetime(
782+
julian_dates, unit='D', origin='julian'))
783+
expected = Series(pd.to_datetime(
784+
julian_dates - pd.Timestamp(0).to_julian_date(), unit='D'))
785+
assert_series_equal(result, expected)
786+
787+
# checking for invalid combination of origin='julian' and unit != D
788+
for unit in units:
789+
if unit == 'D':
790+
continue
791+
with self.assertRaises(ValueError):
792+
pd.to_datetime(julian_dates, unit=unit, origin='julian')
793+
794+
# for origin as 1960-01-01
795+
epoch_1960 = pd.Timestamp('1960-01-01')
796+
epoch_timestamp_convertible = [epoch_1960, epoch_1960.to_datetime(),
797+
epoch_1960.to_datetime64(),
798+
str(epoch_1960)]
799+
invalid_origins = ['random_string', '13-24-1990']
800+
units_from_epoch = [0, 1, 2, 3, 4]
801+
802+
for unit in units:
803+
for epoch in epoch_timestamp_convertible:
804+
expected = Series(
805+
[pd.Timedelta(x, unit=unit) +
806+
epoch_1960 for x in units_from_epoch])
807+
result = Series(pd.to_datetime(
808+
units_from_epoch, unit=unit, origin=epoch))
809+
assert_series_equal(result, expected)
810+
811+
# check for invalid origins
812+
for origin in invalid_origins:
813+
814+
# errors = 'raise'
815+
with self.assertRaises(ValueError):
816+
pd.to_datetime(units_from_epoch, unit=unit,
817+
origin=origin)
818+
819+
for unit in units:
820+
# errors = 'coerce'
821+
result = Series(pd.to_datetime(units_from_epoch, unit=unit,
822+
origin=origin, errors='coerce'))
823+
expected = Series ([tslib.NaT, tslib.NaT, tslib.NaT,
824+
tslib.NaT, tslib.NaT])
825+
assert_series_equal(result, expected)
826+
827+
# errors = 'ignore'
828+
result = Series(pd.to_datetime(units_from_epoch, unit=unit,
829+
origin=origin, errors='ignore'))
830+
expected = Series(units_from_epoch)
831+
assert_series_equal(result, expected)
832+
833+
834+
835+
775836
def test_series_ctor_datetime64(self):
776837
rng = date_range('1/1/2000 00:00:00', '1/1/2000 1:59:50', freq='10s')
777838
dates = np.asarray(rng)

0 commit comments

Comments
 (0)