|
10 | 10 |
|
11 | 11 | from pandas import (Index, Series, TimeSeries, DataFrame,
|
12 | 12 | isnull, date_range, Timestamp, Period, DatetimeIndex,
|
13 |
| - Int64Index, to_datetime, bdate_range, Float64Index) |
| 13 | + Int64Index, to_datetime, bdate_range, Float64Index, TimedeltaIndex) |
14 | 14 |
|
15 | 15 | import pandas.core.datetools as datetools
|
16 | 16 | import pandas.tseries.offsets as offsets
|
@@ -939,19 +939,19 @@ def test_nat_vector_field_access(self):
|
939 | 939 | 'week', 'dayofyear']
|
940 | 940 | for field in fields:
|
941 | 941 | result = getattr(idx, field)
|
942 |
| - expected = [getattr(x, field) if x is not NaT else -1 |
| 942 | + expected = [getattr(x, field) if x is not NaT else np.nan |
943 | 943 | for x in idx]
|
944 |
| - self.assert_numpy_array_equal(result, expected) |
| 944 | + self.assert_numpy_array_equivalent(result, np.array(expected)) |
945 | 945 |
|
946 | 946 | def test_nat_scalar_field_access(self):
|
947 | 947 | fields = ['year', 'quarter', 'month', 'day', 'hour',
|
948 | 948 | 'minute', 'second', 'microsecond', 'nanosecond',
|
949 | 949 | 'week', 'dayofyear']
|
950 | 950 | for field in fields:
|
951 | 951 | result = getattr(NaT, field)
|
952 |
| - self.assertEqual(result, -1) |
| 952 | + self.assertTrue(np.isnan(result)) |
953 | 953 |
|
954 |
| - self.assertEqual(NaT.weekday(), -1) |
| 954 | + self.assertTrue(np.isnan(NaT.weekday())) |
955 | 955 |
|
956 | 956 | def test_to_datetime_types(self):
|
957 | 957 |
|
@@ -3376,6 +3376,33 @@ def check(val,unit=None,h=1,s=1,us=0):
|
3376 | 3376 | result = Timestamp(NaT)
|
3377 | 3377 | self.assertIs(result, NaT)
|
3378 | 3378 |
|
| 3379 | + def test_roundtrip(self): |
| 3380 | + |
| 3381 | + # test value to string and back conversions |
| 3382 | + # further test accessors |
| 3383 | + base = Timestamp('20140101 00:00:00') |
| 3384 | + |
| 3385 | + result = Timestamp(base.value + pd.Timedelta('5ms').value) |
| 3386 | + self.assertEqual(result,Timestamp(str(base) + ".005000")) |
| 3387 | + self.assertEqual(result.microsecond,5000) |
| 3388 | + |
| 3389 | + result = Timestamp(base.value + pd.Timedelta('5us').value) |
| 3390 | + self.assertEqual(result,Timestamp(str(base) + ".000005")) |
| 3391 | + self.assertEqual(result.microsecond,5) |
| 3392 | + |
| 3393 | + result = Timestamp(base.value + pd.Timedelta('5ns').value) |
| 3394 | + self.assertEqual(result,Timestamp(str(base) + ".000000005")) |
| 3395 | + self.assertEqual(result.nanosecond,5) |
| 3396 | + self.assertEqual(result.microsecond,0) |
| 3397 | + |
| 3398 | + result = Timestamp(base.value + pd.Timedelta('6ms 5us').value) |
| 3399 | + self.assertEqual(result,Timestamp(str(base) + ".006005")) |
| 3400 | + self.assertEqual(result.microsecond,5+6*1000) |
| 3401 | + |
| 3402 | + result = Timestamp(base.value + pd.Timedelta('200ms 5us').value) |
| 3403 | + self.assertEqual(result,Timestamp(str(base) + ".200005")) |
| 3404 | + self.assertEqual(result.microsecond,5+200*1000) |
| 3405 | + |
3379 | 3406 | def test_comparison(self):
|
3380 | 3407 | # 5-18-2012 00:00:00.000
|
3381 | 3408 | stamp = long(1337299200000000000)
|
|
0 commit comments