Skip to content

Commit f826c0e

Browse files
committed
ENH: add nanosecond field accessor to DatetimeIndex, close #1261
1 parent fd90053 commit f826c0e

File tree

3 files changed

+11
-1
lines changed

3 files changed

+11
-1
lines changed

pandas/src/datetime.pyx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1147,7 +1147,11 @@ def fast_field_accessor(ndarray[int64_t] dtindex, object field):
11471147
pandas_datetime_to_datetimestruct(dtindex[i], PANDAS_FR_ns, &dts)
11481148
out[i] = dts.us
11491149
return out
1150-
1150+
elif field == 'ns':
1151+
for i in range(count):
1152+
pandas_datetime_to_datetimestruct(dtindex[i], PANDAS_FR_ns, &dts)
1153+
out[i] = dts.ps / 1000
1154+
return out
11511155
elif field == 'doy':
11521156
for i in range(count):
11531157
pandas_datetime_to_datetimestruct(dtindex[i], PANDAS_FR_ns, &dts)

pandas/tseries/index.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -984,6 +984,7 @@ def freqstr(self):
984984
minute = _field_accessor('minute', 'm')
985985
second = _field_accessor('second', 's')
986986
microsecond = _field_accessor('microsecond', 'us')
987+
nanosecond = _field_accessor('nanosecond', 'ns')
987988
weekofyear = _field_accessor('weekofyear', 'woy')
988989
week = weekofyear
989990
dayofweek = _field_accessor('dayofweek', 'dow')

pandas/tseries/tests/test_timeseries.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1038,6 +1038,11 @@ def test_datetimeindex_accessors(self):
10381038
self.assertEquals(len(dti.weekofyear), 100)
10391039
self.assertEquals(len(dti.quarter), 100)
10401040

1041+
def test_nanosecond_field(self):
1042+
dti = DatetimeIndex(np.arange(10))
1043+
1044+
self.assert_(np.array_equal(dti.nanosecond, np.arange(10)))
1045+
10411046
def test_datetimeindex_diff(self):
10421047
dti1 = DatetimeIndex(freq='Q-JAN', start=datetime(1997,12,31),
10431048
periods=100)

0 commit comments

Comments
 (0)