Skip to content

Commit 6c9b078

Browse files
jbrockmendelPingviinituutti
authored andcommitted
CLN: small clean-up PeriodIndex (easy parts of pandas-dev#23416)
1 parent bc63cbd commit 6c9b078

File tree

2 files changed

+5
-29
lines changed

2 files changed

+5
-29
lines changed

pandas/core/arrays/datetimelike.py

+3
Original file line numberDiff line numberDiff line change
@@ -944,6 +944,9 @@ def validate_dtype_freq(dtype, freq):
944944
ValueError : non-period dtype
945945
IncompatibleFrequency : mismatch between dtype and freq
946946
"""
947+
if freq is not None:
948+
freq = frequencies.to_offset(freq)
949+
947950
if dtype is not None:
948951
dtype = pandas_dtype(dtype)
949952
if not is_period_dtype(dtype):

pandas/core/indexes/period.py

+2-29
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
from pandas._libs.tslibs import resolution
3030

3131
from pandas.core.algorithms import unique1d
32-
from pandas.core.dtypes.dtypes import PeriodDtype
32+
import pandas.core.arrays.datetimelike as dtl
3333
from pandas.core.arrays.period import PeriodArray, period_array
3434
from pandas.core.base import _shared_docs
3535
from pandas.core.indexes.base import _index_shared_docs, ensure_index
@@ -48,17 +48,6 @@
4848
dict(target_klass='PeriodIndex or list of Periods'))
4949

5050

51-
def _wrap_field_accessor(name):
52-
fget = getattr(PeriodArray, name).fget
53-
54-
def f(self):
55-
result = fget(self)
56-
return Index(result, name=self.name)
57-
58-
f.__name__ = name
59-
f.__doc__ = fget.__doc__
60-
return property(f)
61-
6251
# --- Period index sketch
6352

6453

@@ -211,27 +200,11 @@ def __new__(cls, data=None, ordinal=None, freq=None, start=None, end=None,
211200

212201
if data is None and ordinal is None:
213202
# range-based.
214-
if periods is not None:
215-
if is_float(periods):
216-
periods = int(periods)
217-
218-
elif not is_integer(periods):
219-
msg = 'periods must be a number, got {periods}'
220-
raise TypeError(msg.format(periods=periods))
221-
222203
data, freq = PeriodArray._generate_range(start, end, periods,
223204
freq, fields)
224205
data = PeriodArray(data, freq=freq)
225206
else:
226-
if freq is None and dtype is not None:
227-
freq = PeriodDtype(dtype).freq
228-
elif freq and dtype:
229-
freq = PeriodDtype(freq).freq
230-
dtype = PeriodDtype(dtype).freq
231-
232-
if freq != dtype:
233-
msg = "specified freq and dtype are different"
234-
raise IncompatibleFrequency(msg)
207+
freq = dtl.validate_dtype_freq(dtype, freq)
235208

236209
# PeriodIndex allow PeriodIndex(period_index, freq=different)
237210
# Let's not encourage that kind of behavior in PeriodArray.

0 commit comments

Comments
 (0)