From e90474a506a05281974f93f4153b513080e807b3 Mon Sep 17 00:00:00 2001 From: jreback Date: Sat, 4 Oct 2014 10:49:25 -0400 Subject: [PATCH] BUG: fix applymap to handle Timedelta --- pandas/core/frame.py | 5 +++-- pandas/tests/test_frame.py | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index cba2d3c5aa0e9..2194e8c36a9e3 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -3652,8 +3652,9 @@ def applymap(self, func): # if we have a dtype == 'M8[ns]', provide boxed values def infer(x): - if com.is_datetime64_dtype(x): - x = lib.map_infer(_values_from_object(x), lib.Timestamp) + if com.needs_i8_conversion(x): + f = com.i8_boxer(x) + x = lib.map_infer(_values_from_object(x), f) return lib.map_infer(_values_from_object(x), func) return self.apply(infer) diff --git a/pandas/tests/test_frame.py b/pandas/tests/test_frame.py index 700eb8591fdf9..cefeb89fbc41d 100644 --- a/pandas/tests/test_frame.py +++ b/pandas/tests/test_frame.py @@ -10117,6 +10117,13 @@ def test_applymap(self): result = df.applymap(str) assert_frame_equal(result,expected) + # datetime/timedelta + df['datetime'] = Timestamp('20130101') + df['timedelta'] = Timedelta('1 min') + result = df.applymap(str) + for f in ['datetime','timedelta']: + self.assertEquals(result.loc[0,f],str(df.loc[0,f])) + def test_filter(self): # items filtered = self.frame.filter(['A', 'B', 'E'])