Skip to content

Commit 3ba410a

Browse files
API: return Index instead of array from datetime field accessors (GH15022)
1 parent 0bf4532 commit 3ba410a

File tree

5 files changed

+20
-16
lines changed

5 files changed

+20
-16
lines changed

pandas/tests/indexes/datetimes/test_misc.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -307,5 +307,5 @@ def test_datetimeindex_accessors(self):
307307
def test_nanosecond_field(self):
308308
dti = DatetimeIndex(np.arange(10))
309309

310-
self.assert_numpy_array_equal(dti.nanosecond,
311-
np.arange(10, dtype=np.int32))
310+
self.assert_index_equal(dti.nanosecond,
311+
pd.Index(np.arange(10, dtype=np.int64)))

pandas/tests/indexes/period/test_construction.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ def test_constructor_arrays_negative_year(self):
9191

9292
pindex = PeriodIndex(year=years, quarter=quarters)
9393

94-
self.assert_numpy_array_equal(pindex.year, years)
95-
self.assert_numpy_array_equal(pindex.quarter, quarters)
94+
self.assert_index_equal(pindex.year, pd.Index(years))
95+
self.assert_index_equal(pindex.quarter, pd.Index(quarters))
9696

9797
def test_constructor_invalid_quarters(self):
9898
self.assertRaises(ValueError, PeriodIndex, year=lrange(2000, 2004),

pandas/tests/indexes/period/test_period.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -653,10 +653,10 @@ def test_pindex_fieldaccessor_nat(self):
653653
idx = PeriodIndex(['2011-01', '2011-02', 'NaT',
654654
'2012-03', '2012-04'], freq='D')
655655

656-
exp = np.array([2011, 2011, -1, 2012, 2012], dtype=np.int64)
657-
self.assert_numpy_array_equal(idx.year, exp)
658-
exp = np.array([1, 2, -1, 3, 4], dtype=np.int64)
659-
self.assert_numpy_array_equal(idx.month, exp)
656+
exp = Index([2011, 2011, -1, 2012, 2012], dtype=np.int64)
657+
self.assert_index_equal(idx.year, exp)
658+
exp = Index([1, 2, -1, 3, 4], dtype=np.int64)
659+
self.assert_index_equal(idx.month, exp)
660660

661661
def test_pindex_qaccess(self):
662662
pi = PeriodIndex(['2Q05', '3Q05', '4Q05', '1Q06', '2Q06'], freq='Q')

pandas/tseries/index.py

+9-6
Original file line numberDiff line numberDiff line change
@@ -77,16 +77,19 @@ def f(self):
7777

7878
result = tslib.get_start_end_field(values, field, self.freqstr,
7979
month_kw)
80+
result = self._maybe_mask_results(result, convert='float64')
81+
8082
elif field in ['weekday_name']:
8183
result = tslib.get_date_name_field(values, field)
82-
return self._maybe_mask_results(result)
84+
result = self._maybe_mask_results(result)
8385
elif field in ['is_leap_year']:
8486
# no need to mask NaT
85-
return tslib.get_date_field(values, field)
87+
result = tslib.get_date_field(values, field)
8688
else:
8789
result = tslib.get_date_field(values, field)
90+
result = self._maybe_mask_results(result, convert='float64')
8891

89-
return self._maybe_mask_results(result, convert='float64')
92+
return Index(result)
9093

9194
f.__name__ = name
9295
f.__doc__ = docstring
@@ -1913,9 +1916,9 @@ def to_julian_date(self):
19131916
"""
19141917

19151918
# http://mysite.verizon.net/aesir_research/date/jdalg2.htm
1916-
year = self.year
1917-
month = self.month
1918-
day = self.day
1919+
year = np.asarray(self.year)
1920+
month = np.asarray(self.month)
1921+
day = np.asarray(self.day)
19191922
testarr = month < 3
19201923
year[testarr] -= 1
19211924
month[testarr] += 12

pandas/tseries/period.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@
5252
def _field_accessor(name, alias, docstring=None):
5353
def f(self):
5454
base, mult = _gfc(self.freq)
55-
return get_period_field_arr(alias, self._values, base)
55+
result = get_period_field_arr(alias, self._values, base)
56+
return Index(result)
5657
f.__name__ = name
5758
f.__doc__ = docstring
5859
return property(f)
@@ -585,7 +586,7 @@ def to_datetime(self, dayfirst=False):
585586
@property
586587
def is_leap_year(self):
587588
""" Logical indicating if the date belongs to a leap year """
588-
return tslib._isleapyear_arr(self.year)
589+
return tslib._isleapyear_arr(np.asarray(self.year))
589590

590591
@property
591592
def start_time(self):

0 commit comments

Comments
 (0)