Skip to content
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

DOC: Fixed the doctsring for _set_axis_name (GH 22895) #22969

Merged
Merged
Changes from 8 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
97 changes: 54 additions & 43 deletions pandas/core/generic.py
Original file line number Diff line number Diff line change
Expand Up @@ -1154,29 +1154,32 @@ def rename_axis(self, mapper, axis=0, copy=True, inplace=False):
--------
**Series**

>>> s = pd.Series([1, 2, 3])
>>> s.rename_axis("foo")
foo
0 1
1 2
2 3
dtype: int64
>>> s = pd.Series(["dog", "cat", "monkey"])
>>> s.rename_axis("animal")
datapythonista marked this conversation as resolved.
Show resolved Hide resolved
animal
0 dog
1 cat
2 monkey
dtype: object

**DataFrame**

>>> df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
>>> df.rename_axis("foo")
A B
foo
0 1 4
1 2 5
2 3 6

>>> df.rename_axis("bar", axis="columns")
bar A B
0 1 4
1 2 5
2 3 6
>>> df = pd.DataFrame({"name": ["dog", "cat", "monkey"], "legs": [4, 4, 2]})
Copy link
Member

Choose a reason for hiding this comment

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

this is longer than 79 characters, isn't it?

name legs
0 dog 4
1 cat 4
2 monkey 2
>>> df.rename_axis("animal")
name legs
animal
0 dog 4
1 cat 4
2 monkey 2
>>> df.rename_axis("id", axis="columns")
Copy link
Member

Choose a reason for hiding this comment

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

In this case, the concept id refers to name and legs, which does not make sense.

It could make more sense to have the name as the index, and then may be a column num_legs and a column num_arms and call the axis limbs.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Makes sense

id name legs
0 dog 4
1 cat 4
2 monkey 2
"""
inplace = validate_bool_kwarg(inplace, 'inplace')
non_mapper = is_scalar(mapper) or (is_list_like(mapper) and not
Expand All @@ -1194,44 +1197,52 @@ def rename_axis(self, mapper, axis=0, copy=True, inplace=False):

def _set_axis_name(self, name, axis=0, inplace=False):
"""
Alter the name or names of the axis.
Alter the label(s) of the axis.
Copy link
Member

Choose a reason for hiding this comment

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

This doesn't seem correct. Altering the labels would be changing the names of the columns, not the name of the axis itself.

And small thing, but alter doesn't necessarily need to be correct. If the axis doesn't have a name, it's setting it, but not altering. Set would be better I think.


Parameters
----------
name : str or list of str
Name for the Index, or list of names for the MultiIndex
axis : int or str
0 or 'index' for the index; 1 or 'columns' for the columns
inplace : bool
whether to modify `self` directly or return a copy
Labels(s) to set.
Copy link
Member

Choose a reason for hiding this comment

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

Same as before, label is the names of each individual column, not the name of the axis

axis : {0 or 'index', 1 or 'columns'}, default 0
The axis to set the label. The value 0 or 'index' specifies index,
datapythonista marked this conversation as resolved.
Show resolved Hide resolved
and the value 1 or 'columns' specifies columns.
inplace : boolean, default False
If `True`, do operation inplace and return None.

.. versionadded:: 0.21.0

Returns
-------
renamed : same type as caller or None if inplace=True
Series, DataFrame, Panel, or None
Copy link
Member

Choose a reason for hiding this comment

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

Can you remove Panel here. While it's correct, Panel it's already deprecated and will disappear in couple of months, so not worth having it.

The same type as the caller or `None` if `inplace` is `True`.

See Also
--------
pandas.DataFrame.rename
pandas.Series.rename
pandas.Index.rename
pandas.DataFrame.rename : Alter the labels of :class:`DataFrame`.
pandas.Series.rename : Alter the name or the labels :class:`Series`.
pandas.Index.rename : Alter the name of :class:`Index`
or :class:`MultiIndex`.

Examples
--------
>>> df._set_axis_name("foo")
A
foo
0 1
1 2
2 3
>>> df.index = pd.MultiIndex.from_product([['A'], ['a', 'b', 'c']])
>>> df._set_axis_name(["bar", "baz"])
A
bar baz
A a 1
b 2
c 3
>>> df = pd.DataFrame({"legs": [4, 4, 2]})
legs
0 4
1 4
2 2
>>> df._set_axis_name("animal")
legs
animal
0 4
1 2
2 0
>>> df.index = pd.MultiIndex.from_product([["mammal"], ['dog', 'cat', 'monkey']])
>>> df._set_axis_name(["type", "name"])
legs
type name
mammal dog 4
cat 4
monkey 2
"""
axis = self._get_axis_number(axis)
idx = self._get_axis(axis).set_names(name)
Expand Down