Skip to content
Open
Show file tree
Hide file tree
Changes from 10 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions pandas/core/indexes/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
no_default,
)
from pandas._libs.tslibs import (
OutOfBoundsDatetime,
Timestamp,
tz_compare,
)
Expand Down Expand Up @@ -6204,11 +6203,6 @@ def _maybe_downcast_for_indexing(self, other: Index) -> tuple[Index, Index]:
# standardize on UTC
return self.tz_convert("UTC"), other.tz_convert("UTC")

elif self.inferred_type == "date" and isinstance(other, ABCDatetimeIndex):
try:
return type(other)(self), other
except OutOfBoundsDatetime:
return self, other
elif self.inferred_type == "timedelta" and isinstance(other, ABCTimedeltaIndex):
# TODO: we dont have tests that get here
return type(other)(self), other
Expand Down
13 changes: 13 additions & 0 deletions pandas/tests/frame/indexing/test_indexing.py
Original file line number Diff line number Diff line change
Expand Up @@ -1880,6 +1880,19 @@ def test_add_new_column_infer_string():
tm.assert_frame_equal(df, expected)


def test_datetime_indexer_consistency_pyarrow_date32():
# GH#62158
ser = Series(["2016-01-01"], dtype="date32[pyarrow]")
ser3 = ser.astype("datetime64[ns]")
dti = Index(ser3)
# All should be consistent
assert dti.get_loc(ser[0]) == 0
tm.assert_numpy_array_equal(dti.get_indexer(ser.values), np.array([0]))
tm.assert_numpy_array_equal(
dti.get_indexer(ser.values.astype(object)), np.array([0])
)


class TestSetitemValidation:
# This is adapted from pandas/tests/arrays/masked/test_indexing.py
def _check_setitem_invalid(self, df, invalid, indexer):
Expand Down
7 changes: 4 additions & 3 deletions pandas/tests/frame/methods/test_asfreq.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,9 +192,10 @@ def test_asfreq_with_date_object_index(self, frame_or_series):
ts2 = ts.copy()
ts2.index = [x.date() for x in ts2.index]

result = ts2.asfreq("4h", method="ffill")
expected = ts.asfreq("4h", method="ffill")
tm.assert_equal(result, expected)
with pytest.raises(
TypeError, match="Cannot compare Timestamp with datetime.date"
):
ts2.asfreq("4h", method="ffill")

def test_asfreq_with_unsorted_index(self, frame_or_series):
# GH#39805
Expand Down
17 changes: 11 additions & 6 deletions pandas/tests/indexes/datetimes/test_indexing.py
Original file line number Diff line number Diff line change
Expand Up @@ -517,7 +517,7 @@ def test_get_indexer_date_objs(self):
rng = date_range("1/1/2000", periods=20)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

comment here pointing back to the issue saying the behavior changed


result = rng.get_indexer(rng.map(lambda x: x.date()))
expected = rng.get_indexer(rng)
expected = np.full(len(rng), -1, dtype=np.intp)
tm.assert_numpy_array_equal(result, expected)

def test_get_indexer(self):
Expand Down Expand Up @@ -562,17 +562,22 @@ def test_get_indexer(self):
idx.get_indexer(idx[[0]], method="nearest", tolerance="foo")

@pytest.mark.parametrize(
"target",
"target, expected",
[
[date(2020, 1, 1), Timestamp("2020-01-02")],
[Timestamp("2020-01-01"), date(2020, 1, 2)],
(
[date(2020, 1, 1), Timestamp("2020-01-02")],
np.array([-1, 1], dtype=np.intp),
),
(
[Timestamp("2020-01-01"), Timestamp(date(2020, 1, 2))],
np.array([0, 1], dtype=np.intp),
),
],
)
def test_get_indexer_mixed_dtypes(self, target):
def test_get_indexer_mixed_dtypes(self, target, expected):
# https://github.com/pandas-dev/pandas/issues/33741
values = DatetimeIndex([Timestamp("2020-01-01"), Timestamp("2020-01-02")])
result = values.get_indexer(target)
expected = np.array([0, 1], dtype=np.intp)
tm.assert_numpy_array_equal(result, expected)

@pytest.mark.parametrize(
Expand Down
8 changes: 4 additions & 4 deletions pandas/tests/reshape/merge/test_merge.py
Original file line number Diff line number Diff line change
Expand Up @@ -2132,17 +2132,17 @@ def test_dtype_on_categorical_dates(self):

expected_outer = DataFrame(
[
[pd.Timestamp("2001-01-01").date(), 1.1, 1.3],
[pd.Timestamp("2001-01-02").date(), 1.3, np.nan],
[pd.Timestamp("2001-01-03").date(), np.nan, 1.4],
[date(2001, 1, 1), 1.1, 1.3],
[date(2001, 1, 2), 1.3, np.nan],
[date(2001, 1, 3), np.nan, 1.4],
],
columns=["date", "num2", "num4"],
)
result_outer = merge(df, df2, how="outer", on=["date"])
tm.assert_frame_equal(result_outer, expected_outer)

expected_inner = DataFrame(
[[pd.Timestamp("2001-01-01").date(), 1.1, 1.3]],
[[date(2001, 1, 1), 1.1, 1.3]],
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

edits in this file look unnecessary

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks , I will remove changes of this file.

columns=["date", "num2", "num4"],
)
result_inner = merge(df, df2, how="inner", on=["date"])
Expand Down
3 changes: 2 additions & 1 deletion pandas/tests/series/test_arithmetic.py
Original file line number Diff line number Diff line change
Expand Up @@ -763,7 +763,8 @@ def test_align_date_objects_with_datetimeindex(self):

ts_slice = ts[5:]
ts2 = ts_slice.copy()
ts2.index = [x.date() for x in ts2.index]
# Explicitly convert date objects to Timestamps for alignment
ts2.index = [pd.Timestamp(x.date()) for x in ts2.index]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seems like this defeats the purpose of the test


result = ts + ts2
result2 = ts2 + ts
Expand Down
Loading