Skip to content

Commit 2e1800d

Browse files
BUG: fix alignment in series ops (GH14227)
1 parent 5033a4a commit 2e1800d

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

pandas/core/ops.py

+8-5
Original file line numberDiff line numberDiff line change
@@ -622,11 +622,14 @@ def _align_method_SERIES(left, right, align_asobject=False):
622622

623623
left, right = left.align(right, copy=False)
624624

625-
index, lidx, ridx = left.index.join(right.index, how='outer',
626-
return_indexers=True)
627-
# if DatetimeIndex have different tz, convert to UTC
628-
left.index = index
629-
right.index = index
625+
if is_datetime64tz_dtype(left.index):
626+
if left.index.tz != right.index.tz:
627+
# if DatetimeIndex have different tz, convert to UTC
628+
index, lidx, ridx = left.index.join(
629+
right.index, how='outer', return_indexers=True)
630+
631+
left.index = index
632+
right.index = index
630633

631634
return left, right
632635

pandas/tests/series/test_operators.py

+8
Original file line numberDiff line numberDiff line change
@@ -1810,3 +1810,11 @@ def test_dti_tz_convert_to_utc(self):
18101810

18111811
res = Series([1, 2], index=idx1) + Series([1, 1], index=idx2)
18121812
assert_series_equal(res, Series([np.nan, 3, np.nan], index=base))
1813+
1814+
def test_op_duplicate_index(self):
1815+
# GH14227
1816+
s1 = Series([1, 2], index=[1, 1])
1817+
s2 = Series([10, 10], index=[1, 2])
1818+
result = s1 + s2
1819+
expected = pd.Series([11, 12, np.nan], index=[1, 1, 2])
1820+
assert_series_equal(result, expected)

0 commit comments

Comments
 (0)