Skip to content

Commit a1fc667

Browse files
committed
Merge pull request #8461 from jreback/applymap
BUG: fix applymap to handle Timedelta
2 parents 8560bfa + e90474a commit a1fc667

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

pandas/core/frame.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -3652,8 +3652,9 @@ def applymap(self, func):
36523652

36533653
# if we have a dtype == 'M8[ns]', provide boxed values
36543654
def infer(x):
3655-
if com.is_datetime64_dtype(x):
3656-
x = lib.map_infer(_values_from_object(x), lib.Timestamp)
3655+
if com.needs_i8_conversion(x):
3656+
f = com.i8_boxer(x)
3657+
x = lib.map_infer(_values_from_object(x), f)
36573658
return lib.map_infer(_values_from_object(x), func)
36583659
return self.apply(infer)
36593660

pandas/tests/test_frame.py

+7
Original file line numberDiff line numberDiff line change
@@ -10117,6 +10117,13 @@ def test_applymap(self):
1011710117
result = df.applymap(str)
1011810118
assert_frame_equal(result,expected)
1011910119

10120+
# datetime/timedelta
10121+
df['datetime'] = Timestamp('20130101')
10122+
df['timedelta'] = Timedelta('1 min')
10123+
result = df.applymap(str)
10124+
for f in ['datetime','timedelta']:
10125+
self.assertEquals(result.loc[0,f],str(df.loc[0,f]))
10126+
1012010127
def test_filter(self):
1012110128
# items
1012210129
filtered = self.frame.filter(['A', 'B', 'E'])

0 commit comments

Comments
 (0)