Skip to content

Commit f5a74d4

Browse files
committed
BUG: fix MM-YYYY string parsing case for time series indexing, close pandas-dev#1672
1 parent 6e5d2b8 commit f5a74d4

File tree

3 files changed

+20
-18
lines changed

3 files changed

+20
-18
lines changed

RELEASE.rst

+4
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ pandas 0.8.2
3131

3232
- Add ``flags`` option for ``re.compile`` in some Series.str methods (#1659)
3333

34+
**Bug fixes**
35+
36+
- Fix MM-YYYY time series indexing case (#1672)
37+
3438
pandas 0.8.1
3539
============
3640

pandas/tseries/tests/test_timeseries.py

+2
Original file line numberDiff line numberDiff line change
@@ -1434,6 +1434,8 @@ def test_slice_month(self):
14341434
df = DataFrame(np.random.rand(len(dti), 5), index=dti)
14351435
self.assertEquals(len(df.ix['2005-11']), 30)
14361436

1437+
assert_series_equal(s['2005-11'], s['11-2005'])
1438+
14371439
def test_partial_slice(self):
14381440
rng = DatetimeIndex(freq='D', start=datetime(2005,1,1), periods=500)
14391441
s = Series(np.arange(len(rng)), index=rng)

pandas/tseries/tools.py

+14-18
Original file line numberDiff line numberDiff line change
@@ -200,24 +200,10 @@ def parse_time_string(arg, freq=None):
200200
except Exception:
201201
pass
202202

203-
# f7u12
204-
try:
205-
ret = datetime.strptime(arg, '%Y-%m')
206-
return ret, ret, 'month'
207-
except Exception:
208-
pass
209-
210-
try:
211-
ret = datetime.strptime(arg, '%b %Y')
212-
return ret, ret, 'month'
213-
except Exception:
214-
pass
215-
216-
try:
217-
ret = datetime.strptime(arg, '%b-%Y')
218-
return ret, ret, 'month'
219-
except Exception:
220-
pass
203+
# montly f7u12
204+
mresult = _attempt_monthly(arg)
205+
if mresult:
206+
return mresult
221207

222208
dayfirst = print_config.date_dayfirst
223209
yearfirst = print_config.date_yearfirst
@@ -247,6 +233,16 @@ def parse_time_string(arg, freq=None):
247233
ret = default.replace(**repl)
248234
return ret, parsed, reso # datetime, resolution
249235

236+
def _attempt_monthly(val):
237+
pats = ['%Y-%m', '%m-%Y', '%b %Y', '%b-%Y']
238+
for pat in pats:
239+
try:
240+
ret = datetime.strptime(val, pat)
241+
return ret, ret, 'month'
242+
except Exception:
243+
pass
244+
245+
250246
def _try_parse_monthly(arg):
251247
base = 2000
252248
add_base = False

0 commit comments

Comments
 (0)