Skip to content

Commit 1a62f1a

Browse files
committed
BUG: fix DatetimeIndex bug causing downstream groupby failure, close #1455
1 parent 1c344ca commit 1a62f1a

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

pandas/tseries/index.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -970,17 +970,16 @@ def get_loc(self, key):
970970
except KeyError:
971971
try:
972972
return self._get_string_slice(key)
973-
except (TypeError, KeyError):
973+
except (TypeError, KeyError, ValueError):
974974
pass
975975

976976
if isinstance(key, time):
977977
return self._indices_at_time(key)
978978

979-
stamp = Timestamp(key)
980979
try:
981-
return self._engine.get_loc(stamp)
982-
except KeyError:
983-
raise KeyError(stamp)
980+
return self._engine.get_loc(Timestamp(key))
981+
except (KeyError, ValueError):
982+
raise KeyError(key)
984983

985984
def _indices_at_time(self, key):
986985
from dateutil.parser import parse

pandas/tseries/tests/test_timeseries.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -913,6 +913,21 @@ def test_set_dataframe_column_ns_dtype(self):
913913
x[0] = to_datetime(x[0])
914914
self.assert_(x[0].dtype == np.dtype('M8[ns]'))
915915

916+
def test_groupby_count_dateparseerror(self):
917+
from pandas import *
918+
919+
dr = date_range(start='1/1/2012', freq='5min', periods=10)
920+
921+
# BAD Example, datetimes first
922+
s = Series(np.arange(10), index=[dr, range(10)])
923+
grouped = s.groupby(lambda x: x[1] % 2 == 0)
924+
result = grouped.count()
925+
926+
s = Series(np.arange(10), index=[range(10), dr])
927+
grouped = s.groupby(lambda x: x[0] % 2 == 0)
928+
expected = grouped.count()
929+
930+
assert_series_equal(result, expected)
916931

917932
def _simple_ts(start, end, freq='D'):
918933
rng = date_range(start, end, freq=freq)

0 commit comments

Comments
 (0)