Skip to content

REF: test_rename_axis #33152

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 30, 2020
Merged
Show file tree
Hide file tree
Changes from all 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
24 changes: 0 additions & 24 deletions pandas/tests/frame/methods/test_rename.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,30 +67,6 @@ def test_rename_chainmap(self, args, kwargs):
expected = DataFrame({"a": colAData, "b": colBdata})
tm.assert_frame_equal(result, expected)

@pytest.mark.parametrize(
"kwargs, rename_index, rename_columns",
[
({"mapper": None, "axis": 0}, True, False),
({"mapper": None, "axis": 1}, False, True),
({"index": None}, True, False),
({"columns": None}, False, True),
({"index": None, "columns": None}, True, True),
({}, False, False),
],
)
def test_rename_axis_none(self, kwargs, rename_index, rename_columns):
# GH 25034
index = Index(list("abc"), name="foo")
columns = Index(["col1", "col2"], name="bar")
data = np.arange(6).reshape(3, 2)
df = DataFrame(data, index, columns)

result = df.rename_axis(**kwargs)
expected_index = index.rename(None) if rename_index else index
expected_columns = columns.rename(None) if rename_columns else columns
expected = DataFrame(data, expected_index, expected_columns)
tm.assert_frame_equal(result, expected)

def test_rename_multiindex(self):

tuples_index = [("foo1", "bar1"), ("foo2", "bar2")]
Expand Down
105 changes: 105 additions & 0 deletions pandas/tests/frame/methods/test_rename_axis.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
import numpy as np
import pytest

from pandas import DataFrame, Index, MultiIndex
import pandas._testing as tm


class TestDataFrameRenameAxis:
def test_rename_axis_inplace(self, float_frame):
# GH#15704
expected = float_frame.rename_axis("foo")
result = float_frame.copy()
no_return = result.rename_axis("foo", inplace=True)

assert no_return is None
tm.assert_frame_equal(result, expected)

expected = float_frame.rename_axis("bar", axis=1)
result = float_frame.copy()
no_return = result.rename_axis("bar", axis=1, inplace=True)

assert no_return is None
tm.assert_frame_equal(result, expected)

def test_rename_axis_raises(self):
# GH#17833
df = DataFrame({"A": [1, 2], "B": [1, 2]})
with pytest.raises(ValueError, match="Use `.rename`"):
df.rename_axis(id, axis=0)

with pytest.raises(ValueError, match="Use `.rename`"):
df.rename_axis({0: 10, 1: 20}, axis=0)

with pytest.raises(ValueError, match="Use `.rename`"):
df.rename_axis(id, axis=1)

with pytest.raises(ValueError, match="Use `.rename`"):
df["A"].rename_axis(id)

def test_rename_axis_mapper(self):
# GH#19978
mi = MultiIndex.from_product([["a", "b", "c"], [1, 2]], names=["ll", "nn"])
df = DataFrame(
{"x": list(range(len(mi))), "y": [i * 10 for i in range(len(mi))]}, index=mi
)

# Test for rename of the Index object of columns
result = df.rename_axis("cols", axis=1)
tm.assert_index_equal(result.columns, Index(["x", "y"], name="cols"))

# Test for rename of the Index object of columns using dict
result = result.rename_axis(columns={"cols": "new"}, axis=1)
tm.assert_index_equal(result.columns, Index(["x", "y"], name="new"))

# Test for renaming index using dict
result = df.rename_axis(index={"ll": "foo"})
assert result.index.names == ["foo", "nn"]

# Test for renaming index using a function
result = df.rename_axis(index=str.upper, axis=0)
assert result.index.names == ["LL", "NN"]

# Test for renaming index providing complete list
result = df.rename_axis(index=["foo", "goo"])
assert result.index.names == ["foo", "goo"]

# Test for changing index and columns at same time
sdf = df.reset_index().set_index("nn").drop(columns=["ll", "y"])
result = sdf.rename_axis(index="foo", columns="meh")
assert result.index.name == "foo"
assert result.columns.name == "meh"

# Test different error cases
with pytest.raises(TypeError, match="Must pass"):
df.rename_axis(index="wrong")

with pytest.raises(ValueError, match="Length of names"):
df.rename_axis(index=["wrong"])

with pytest.raises(TypeError, match="bogus"):
df.rename_axis(bogus=None)

@pytest.mark.parametrize(
"kwargs, rename_index, rename_columns",
[
({"mapper": None, "axis": 0}, True, False),
({"mapper": None, "axis": 1}, False, True),
({"index": None}, True, False),
({"columns": None}, False, True),
({"index": None, "columns": None}, True, True),
({}, False, False),
],
)
def test_rename_axis_none(self, kwargs, rename_index, rename_columns):
# GH 25034
index = Index(list("abc"), name="foo")
columns = Index(["col1", "col2"], name="bar")
data = np.arange(6).reshape(3, 2)
df = DataFrame(data, index, columns)

result = df.rename_axis(**kwargs)
expected_index = index.rename(None) if rename_index else index
expected_columns = columns.rename(None) if rename_columns else columns
expected = DataFrame(data, expected_index, expected_columns)
tm.assert_frame_equal(result, expected)
74 changes: 0 additions & 74 deletions pandas/tests/frame/test_alter_axes.py
Original file line number Diff line number Diff line change
Expand Up @@ -615,80 +615,6 @@ def test_dti_set_index_reindex(self):

# Renaming

def test_rename_axis_inplace(self, float_frame):
# GH 15704
expected = float_frame.rename_axis("foo")
result = float_frame.copy()
no_return = result.rename_axis("foo", inplace=True)

assert no_return is None
tm.assert_frame_equal(result, expected)

expected = float_frame.rename_axis("bar", axis=1)
result = float_frame.copy()
no_return = result.rename_axis("bar", axis=1, inplace=True)

assert no_return is None
tm.assert_frame_equal(result, expected)

def test_rename_axis_raises(self):
# https://github.com/pandas-dev/pandas/issues/17833
df = DataFrame({"A": [1, 2], "B": [1, 2]})
with pytest.raises(ValueError, match="Use `.rename`"):
df.rename_axis(id, axis=0)

with pytest.raises(ValueError, match="Use `.rename`"):
df.rename_axis({0: 10, 1: 20}, axis=0)

with pytest.raises(ValueError, match="Use `.rename`"):
df.rename_axis(id, axis=1)

with pytest.raises(ValueError, match="Use `.rename`"):
df["A"].rename_axis(id)

def test_rename_axis_mapper(self):
# GH 19978
mi = MultiIndex.from_product([["a", "b", "c"], [1, 2]], names=["ll", "nn"])
df = DataFrame(
{"x": list(range(len(mi))), "y": [i * 10 for i in range(len(mi))]}, index=mi
)

# Test for rename of the Index object of columns
result = df.rename_axis("cols", axis=1)
tm.assert_index_equal(result.columns, Index(["x", "y"], name="cols"))

# Test for rename of the Index object of columns using dict
result = result.rename_axis(columns={"cols": "new"}, axis=1)
tm.assert_index_equal(result.columns, Index(["x", "y"], name="new"))

# Test for renaming index using dict
result = df.rename_axis(index={"ll": "foo"})
assert result.index.names == ["foo", "nn"]

# Test for renaming index using a function
result = df.rename_axis(index=str.upper, axis=0)
assert result.index.names == ["LL", "NN"]

# Test for renaming index providing complete list
result = df.rename_axis(index=["foo", "goo"])
assert result.index.names == ["foo", "goo"]

# Test for changing index and columns at same time
sdf = df.reset_index().set_index("nn").drop(columns=["ll", "y"])
result = sdf.rename_axis(index="foo", columns="meh")
assert result.index.name == "foo"
assert result.columns.name == "meh"

# Test different error cases
with pytest.raises(TypeError, match="Must pass"):
df.rename_axis(index="wrong")

with pytest.raises(ValueError, match="Length of names"):
df.rename_axis(index=["wrong"])

with pytest.raises(TypeError, match="bogus"):
df.rename_axis(bogus=None)

def test_set_index_names(self):
df = tm.makeDataFrame()
df.index.name = "name"
Expand Down
9 changes: 0 additions & 9 deletions pandas/tests/generic/test_series.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,6 @@ def test_rename_mi(self):
)
s.rename(str.lower)

@pytest.mark.parametrize("func", ["rename_axis", "_set_axis_name"])
def test_set_axis_name(self, func):
s = Series([1, 2, 3], index=["a", "b", "c"])
name = "foo"

result = methodcaller(func, name)(s)
assert s.index.name is None
assert result.index.name == name

@pytest.mark.parametrize("func", ["rename_axis", "_set_axis_name"])
def test_set_axis_name_mi(self, func):
s = Series(
Expand Down
43 changes: 43 additions & 0 deletions pandas/tests/series/methods/test_rename_axis.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import pytest

from pandas import Index, MultiIndex, Series
import pandas._testing as tm


class TestSeriesRenameAxis:
def test_rename_axis_mapper(self):
# GH 19978
mi = MultiIndex.from_product([["a", "b", "c"], [1, 2]], names=["ll", "nn"])
ser = Series(list(range(len(mi))), index=mi)

result = ser.rename_axis(index={"ll": "foo"})
assert result.index.names == ["foo", "nn"]

result = ser.rename_axis(index=str.upper, axis=0)
assert result.index.names == ["LL", "NN"]

result = ser.rename_axis(index=["foo", "goo"])
assert result.index.names == ["foo", "goo"]

with pytest.raises(TypeError, match="unexpected"):
ser.rename_axis(columns="wrong")

def test_rename_axis_inplace(self, datetime_series):
# GH 15704
expected = datetime_series.rename_axis("foo")
result = datetime_series
no_return = result.rename_axis("foo", inplace=True)

assert no_return is None
tm.assert_series_equal(result, expected)

@pytest.mark.parametrize("kwargs", [{"mapper": None}, {"index": None}, {}])
def test_rename_axis_none(self, kwargs):
# GH 25034
index = Index(list("abc"), name="foo")
ser = Series([1, 2, 3], index=index)

result = ser.rename_axis(**kwargs)
expected_index = index.rename(None) if kwargs else index
expected = Series([1, 2, 3], index=expected_index)
tm.assert_series_equal(result, expected)
39 changes: 1 addition & 38 deletions pandas/tests/series/test_alter_axes.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import numpy as np
import pytest

from pandas import Index, MultiIndex, Series
from pandas import Index, Series
import pandas._testing as tm


Expand Down Expand Up @@ -54,43 +54,6 @@ def test_set_index_makes_timeseries(self):
s.index = idx
assert s.index.is_all_dates

def test_rename_axis_mapper(self):
# GH 19978
mi = MultiIndex.from_product([["a", "b", "c"], [1, 2]], names=["ll", "nn"])
s = Series(list(range(len(mi))), index=mi)

result = s.rename_axis(index={"ll": "foo"})
assert result.index.names == ["foo", "nn"]

result = s.rename_axis(index=str.upper, axis=0)
assert result.index.names == ["LL", "NN"]

result = s.rename_axis(index=["foo", "goo"])
assert result.index.names == ["foo", "goo"]

with pytest.raises(TypeError, match="unexpected"):
s.rename_axis(columns="wrong")

def test_rename_axis_inplace(self, datetime_series):
# GH 15704
expected = datetime_series.rename_axis("foo")
result = datetime_series
no_return = result.rename_axis("foo", inplace=True)

assert no_return is None
tm.assert_series_equal(result, expected)

@pytest.mark.parametrize("kwargs", [{"mapper": None}, {"index": None}, {}])
def test_rename_axis_none(self, kwargs):
# GH 25034
index = Index(list("abc"), name="foo")
df = Series([1, 2, 3], index=index)

result = df.rename_axis(**kwargs)
expected_index = index.rename(None) if kwargs else index
expected = Series([1, 2, 3], index=expected_index)
tm.assert_series_equal(result, expected)

def test_set_axis_inplace_axes(self, axis_series):
# GH14636
ser = Series(np.arange(4), index=[1, 3, 5, 7], dtype="int64")
Expand Down