Skip to content

Commit 55a3af5

Browse files
tsdlovelldlovell
authored andcommitted
BUG: fix issue with concat of localized timestamps
TST: test concat of dataframes with non-None timezone columns
1 parent 1fe02d5 commit 55a3af5

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

pandas/tests/frame/test_combine_concat.py

+22
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,28 @@ def test_combine_multiple_frames_dtypes(self):
4646
expected = Series(dict(float64=2, float32=2))
4747
assert_series_equal(results, expected)
4848

49+
def test_combine_multiple_tzs(self):
50+
# GH 12467
51+
ts1 = Timestamp('2015-01-01', tz=None)
52+
ts2 = Timestamp('2015-01-01', tz='UTC')
53+
ts3 = Timestamp('2015-01-01', tz='EST')
54+
55+
df1 = DataFrame(dict(time=[ts1]))
56+
df2 = DataFrame(dict(time=[ts2]))
57+
df3 = DataFrame(dict(time=[ts3]))
58+
59+
results = pd.concat([df1, df2]).reset_index(drop=True)
60+
expected = DataFrame(dict(time=[ts1, ts2]), dtype=object)
61+
assert_frame_equal(results, expected)
62+
63+
results = pd.concat([df1, df3]).reset_index(drop=True)
64+
expected = DataFrame(dict(time=[ts1, ts3]), dtype=object)
65+
assert_frame_equal(results, expected)
66+
67+
results = pd.concat([df2, df3]).reset_index(drop=True)
68+
expected = DataFrame(dict(time=[ts2, ts3]))
69+
assert_frame_equal(results, expected)
70+
4971
def test_append_series_dict(self):
5072
df = DataFrame(np.random.randn(5, 4),
5173
columns=['foo', 'bar', 'baz', 'qux'])

pandas/tseries/common.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ def convert_to_pydatetime(x, axis):
260260
# if dtype is of datetimetz or timezone
261261
if x.dtype.kind == _NS_DTYPE.kind:
262262
if getattr(x, 'tz', None) is not None:
263-
x = x.asobject
263+
x = x.asobject.values
264264
else:
265265
shape = x.shape
266266
x = tslib.ints_to_pydatetime(x.view(np.int64).ravel())
@@ -271,6 +271,8 @@ def convert_to_pydatetime(x, axis):
271271
x = tslib.ints_to_pytimedelta(x.view(np.int64).ravel())
272272
x = x.reshape(shape)
273273

274+
if axis == 1:
275+
x = np.atleast_2d(x)
274276
return x
275277

276278
if typs is None:

0 commit comments

Comments
 (0)