@@ -194,15 +194,31 @@ def __new__(cls, data=None, ordinal=None, freq=None, start=None, end=None,
194
194
195
195
if data is None and ordinal is None :
196
196
# range-based.
197
- data , freq = PeriodArray ._generate_range (start , end , periods ,
198
- freq , fields )
197
+ data , freq2 = PeriodArray ._generate_range (start , end , periods ,
198
+ freq , fields )
199
199
# PeriodArray._generate range does validate that fields is
200
200
# empty when really using the range-based constructor.
201
201
if not fields :
202
- warnings .warn ("Creating a PeriodIndex by passing range "
203
- "endpoints is deprecated. Use "
204
- "`pandas.period_range` instead." ,
205
- FutureWarning , stacklevel = 2 )
202
+ msg = ("Creating a PeriodIndex by passing range "
203
+ "endpoints is deprecated. Use "
204
+ "`pandas.period_range` instead." )
205
+ # period_range differs from PeriodIndex for cases like
206
+ # start="2000", periods=4
207
+ # PeriodIndex interprets that as A-DEC freq.
208
+ # period_range interprets it as 'D' freq.
209
+ cond = (
210
+ freq is None and (
211
+ (start and not isinstance (start , Period )) or
212
+ (end and not isinstance (end , Period ))
213
+ )
214
+ )
215
+ if cond :
216
+ msg += (
217
+ " Note that the default `freq` may differ. Pass "
218
+ "'freq=\" {}\" ' to ensure the same output."
219
+ ).format (freq2 .freqstr )
220
+ warnings .warn (msg , FutureWarning , stacklevel = 2 )
221
+ freq = freq2
206
222
207
223
data = PeriodArray (data , freq = freq )
208
224
else :
@@ -1058,6 +1074,9 @@ def period_range(start=None, end=None, periods=None, freq=None, name=None):
1058
1074
if com .count_not_none (start , end , periods ) != 2 :
1059
1075
raise ValueError ('Of the three parameters: start, end, and periods, '
1060
1076
'exactly two must be specified' )
1077
+ if freq is None and (not isinstance (start , Period )
1078
+ and not isinstance (end , Period )):
1079
+ freq = 'D'
1061
1080
1062
1081
data , freq = PeriodArray ._generate_range (start , end , periods , freq ,
1063
1082
fields = {})
0 commit comments