Skip to content

Commit bbd5530

Browse files
committed
BUG: Fixed upcast dtype for datetime64 in merge
Closes pandas-dev#31208
1 parent 6752833 commit bbd5530

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

pandas/core/internals/concat.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ def _get_empty_dtype_and_na(join_units):
350350
dtype = upcast_classes["datetimetz"]
351351
return dtype[0], tslibs.NaT
352352
elif "datetime" in upcast_classes:
353-
return np.dtype("M8[ns]"), tslibs.iNaT
353+
return np.dtype("M8[ns]"), np.datetime64("NaT", "ns")
354354
elif "timedelta" in upcast_classes:
355355
return np.dtype("m8[ns]"), np.timedelta64("NaT", "ns")
356356
else: # pragma

pandas/tests/reshape/merge/test_merge.py

+17
Original file line numberDiff line numberDiff line change
@@ -2152,3 +2152,20 @@ def test_merge_multiindex_columns():
21522152
expected["id"] = ""
21532153

21542154
tm.assert_frame_equal(result, expected)
2155+
2156+
2157+
def test_merge_datetime_upcast_dtype():
2158+
# https://github.com/pandas-dev/pandas/issues/31208
2159+
df1 = pd.DataFrame({"x": ["a", "b", "c"], "y": ["1", "2", "4"]})
2160+
df2 = pd.DataFrame(
2161+
{"y": ["1", "2", "3"], "z": pd.to_datetime(["2000", "2001", "2002"])}
2162+
)
2163+
result = pd.merge(df1, df2, how="left", on="y")
2164+
expected = pd.DataFrame(
2165+
{
2166+
"x": ["a", "b", "c"],
2167+
"y": ["1", "2", "4"],
2168+
"z": pd.to_datetime(["2000", "2001", "NaT"]),
2169+
}
2170+
)
2171+
tm.assert_frame_equal(result, expected)

0 commit comments

Comments
 (0)