Skip to content

Commit

Permalink
DEPR: don't make Index instantiate Int64/Uint64/Flaot64Index
Browse files Browse the repository at this point in the history
  • Loading branch information
Terji Petersen authored and Terji Petersen committed Nov 6, 2022
1 parent e5a8d4f commit 3714e85
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 21 deletions.
4 changes: 2 additions & 2 deletions pandas/tests/apply/test_series_apply.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ def test_apply_datetimetz():
# change dtype
# GH 14506 : Returned dtype changed from int32 to int64
result = s.apply(lambda x: x.hour)
exp = Series(list(range(24)) + [0], name="XX", dtype=np.int64)
exp = Series(list(range(24)) + [0], name="XX", dtype=np.int32)
tm.assert_series_equal(result, exp)

# not vectorized
Expand Down Expand Up @@ -766,7 +766,7 @@ def test_map_datetimetz():
# change dtype
# GH 14506 : Returned dtype changed from int32 to int64
result = s.map(lambda x: x.hour)
exp = Series(list(range(24)) + [0], name="XX", dtype=np.int64)
exp = Series(list(range(24)) + [0], name="XX", dtype=np.int32)
tm.assert_series_equal(result, exp)

# not vectorized
Expand Down
2 changes: 1 addition & 1 deletion pandas/tests/frame/indexing/test_indexing.py
Original file line number Diff line number Diff line change
Expand Up @@ -736,7 +736,7 @@ def test_getitem_setitem_float_labels(self, using_array_manager):

# positional slicing only via iloc!
msg = (
"cannot do positional indexing on Float64Index with "
"cannot do positional indexing on NumericIndex with "
r"these indexers \[1.0\] of type float"
)
with pytest.raises(TypeError, match=msg):
Expand Down
2 changes: 1 addition & 1 deletion pandas/tests/frame/methods/test_set_index.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ def test_set_index_cast(self):
df = DataFrame(
{"A": [1.1, 2.2, 3.3], "B": [5.0, 6.1, 7.2]}, index=[2010, 2011, 2012]
)
df2 = df.set_index(df.index.astype(np.int32))
df2 = df.set_index(df.index.astype(np.int64))
tm.assert_frame_equal(df, df2)

# A has duplicate values, C does not
Expand Down
29 changes: 22 additions & 7 deletions pandas/tests/reshape/test_pivot.py
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,14 @@ def test_pivot_no_values(self):
res = df.pivot_table(index=df.index.month, columns=df.index.day)

exp_columns = MultiIndex.from_tuples([("A", 1), ("A", 2)])
exp = DataFrame([[2.5, 4.0], [2.0, np.nan]], index=[1, 2], columns=exp_columns)
exp_columns = exp_columns.set_levels(
exp_columns.levels[1].astype(np.int32), level=1
)
exp = DataFrame(
[[2.5, 4.0], [2.0, np.nan]],
index=Index([1, 2], dtype=np.int32),
columns=exp_columns,
)
tm.assert_frame_equal(res, exp)

df = DataFrame(
Expand All @@ -424,7 +431,9 @@ def test_pivot_no_values(self):
res = df.pivot_table(index=df.index.month, columns=Grouper(key="dt", freq="M"))
exp_columns = MultiIndex.from_tuples([("A", pd.Timestamp("2011-01-31"))])
exp_columns.names = [None, "dt"]
exp = DataFrame([3.25, 2.0], index=[1, 2], columns=exp_columns)
exp = DataFrame(
[3.25, 2.0], index=Index([1, 2], dtype=np.int32), columns=exp_columns
)
tm.assert_frame_equal(res, exp)

res = df.pivot_table(
Expand Down Expand Up @@ -1604,7 +1613,7 @@ def test_pivot_dtaccessor(self):
expected = DataFrame(
{7: [0, 3], 8: [1, 4], 9: [2, 5]},
index=exp_idx,
columns=Index([7, 8, 9], name="dt1"),
columns=Index([7, 8, 9], dtype=np.int32, name="dt1"),
)
tm.assert_frame_equal(result, expected)

Expand All @@ -1614,8 +1623,8 @@ def test_pivot_dtaccessor(self):

expected = DataFrame(
{7: [0, 3], 8: [1, 4], 9: [2, 5]},
index=Index([1, 2], name="dt2"),
columns=Index([7, 8, 9], name="dt1"),
index=Index([1, 2], dtype=np.int32, name="dt2"),
columns=Index([7, 8, 9], dtype=np.int32, name="dt1"),
)
tm.assert_frame_equal(result, expected)

Expand All @@ -1627,10 +1636,16 @@ def test_pivot_dtaccessor(self):
)

exp_col = MultiIndex.from_arrays(
[[7, 7, 8, 8, 9, 9], [1, 2] * 3], names=["dt1", "dt2"]
[
np.array([7, 7, 8, 8, 9, 9], dtype=np.int32),
np.array([1, 2] * 3, dtype=np.int32),
],
names=["dt1", "dt2"],
)
expected = DataFrame(
np.array([[0, 3, 1, 4, 2, 5]], dtype="int64"), index=[2013], columns=exp_col
np.array([[0, 3, 1, 4, 2, 5]], dtype="int64"),
index=Index([2013], dtype=np.int32),
columns=exp_col,
)
tm.assert_frame_equal(result, expected)

Expand Down
4 changes: 2 additions & 2 deletions pandas/tests/reshape/test_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ def test_datetimeindex(self):
# make sure that the ordering on datetimeindex is consistent
x = date_range("2000-01-01", periods=2)
result1, result2 = (Index(y).day for y in cartesian_product([x, x]))
expected1 = Index([1, 1, 2, 2])
expected2 = Index([1, 2, 1, 2])
expected1 = Index([1, 1, 2, 2], dtype=np.int32)
expected2 = Index([1, 2, 1, 2], dtype=np.int32)
tm.assert_index_equal(result1, expected1)
tm.assert_index_equal(result2, expected2)

Expand Down
9 changes: 5 additions & 4 deletions pandas/tests/series/accessors/test_dt_accessor.py
Original file line number Diff line number Diff line change
Expand Up @@ -229,14 +229,14 @@ def test_dt_namespace_accessor_index_and_values(self):
dti = date_range("20140204", periods=3, freq="s")
ser = Series(dti, index=index, name="xxx")
exp = Series(
np.array([2014, 2014, 2014], dtype="int64"), index=index, name="xxx"
np.array([2014, 2014, 2014], dtype="int32"), index=index, name="xxx"
)
tm.assert_series_equal(ser.dt.year, exp)

exp = Series(np.array([2, 2, 2], dtype="int64"), index=index, name="xxx")
exp = Series(np.array([2, 2, 2], dtype="int32"), index=index, name="xxx")
tm.assert_series_equal(ser.dt.month, exp)

exp = Series(np.array([0, 1, 2], dtype="int64"), index=index, name="xxx")
exp = Series(np.array([0, 1, 2], dtype="int32"), index=index, name="xxx")
tm.assert_series_equal(ser.dt.second, exp)

exp = Series([ser[0]] * 3, index=index, name="xxx")
Expand Down Expand Up @@ -386,7 +386,7 @@ def test_dt_namespace_accessor_categorical(self):
dti = DatetimeIndex(["20171111", "20181212"]).repeat(2)
ser = Series(pd.Categorical(dti), name="foo")
result = ser.dt.year
expected = Series([2017, 2017, 2018, 2018], name="foo")
expected = Series([2017, 2017, 2018, 2018], dtype="int32", name="foo")
tm.assert_series_equal(result, expected)

def test_dt_tz_localize_categorical(self, tz_aware_fixture):
Expand Down Expand Up @@ -748,6 +748,7 @@ def test_hour_index(self):
result = dt_series.dt.hour
expected = Series(
[0, 1, 2, 3, 4],
dtype="int32",
index=[2, 6, 7, 8, 11],
)
tm.assert_series_equal(result, expected)
Expand Down
10 changes: 6 additions & 4 deletions pandas/tests/series/indexing/test_setitem.py
Original file line number Diff line number Diff line change
Expand Up @@ -1159,7 +1159,7 @@ def expected(self, val):
return Series(res_values)


@pytest.mark.parametrize("val", [512, np.int16(512)])
@pytest.mark.parametrize("val", [np.int16(512), np.int16(512)])
class TestSetitemIntoIntegerSeriesNeedsUpcast(SetitemCastingEquivalents):
@pytest.fixture
def obj(self):
Expand All @@ -1174,7 +1174,7 @@ def expected(self):
return Series([1, 512, 3], dtype=np.int16)


@pytest.mark.parametrize("val", [2**33 + 1.0, 2**33 + 1.1, 2**62])
@pytest.mark.parametrize("val", [2**30 + 1.0, 2**33 + 1.1, 2**62])
class TestSmallIntegerSetitemUpcast(SetitemCastingEquivalents):
# https://github.com/pandas-dev/pandas/issues/39584#issuecomment-941212124
@pytest.fixture
Expand All @@ -1187,10 +1187,12 @@ def key(self):

@pytest.fixture
def expected(self, val):
if val % 1 != 0:
if val > np.iinfo(np.int64).max:
dtype = "f8"
else:
elif val > np.iinfo(np.int32).max:
dtype = "i8"
else:
dtype = "i4"
return Series([val, 2, 3], dtype=dtype)


Expand Down

0 comments on commit 3714e85

Please sign in to comment.