-
-
Notifications
You must be signed in to change notification settings - Fork 18.4k
Fix the docstring of xs in pandas/core/generic.py #22892 #23913
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
Changes from 5 commits
d0fadf3
5ed3302
841a3cb
47e0fe2
5e39bfc
3f11180
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -3270,71 +3270,95 @@ class max_speed | |||||
|
||||||
def xs(self, key, axis=0, level=None, drop_level=True): | ||||||
""" | ||||||
Returns a cross-section (row(s) or column(s)) from the | ||||||
Series/DataFrame. Defaults to cross-section on the rows (axis=0). | ||||||
Return cross-section from the Series/DataFrame. | ||||||
|
||||||
This methode takes a level argument to select data at a particular | ||||||
level of a MultiIndex easier. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|
||||||
Parameters | ||||||
---------- | ||||||
key : object | ||||||
Some label contained in the index, or partially in a MultiIndex | ||||||
axis : int, default 0 | ||||||
Axis to retrieve cross-section on | ||||||
key : label or tuple of label, e.g. ['a', 'b', 'c'] | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
Label contained in the index, or partially in a MultiIndex. | ||||||
axis : {0 or 'index', 1 or 'columns'}, default 0 | ||||||
Axis to retrieve cross-section on. | ||||||
level : object, defaults to first n levels (n=1 or len(key)) | ||||||
In case of a key partially contained in a MultiIndex, indicate | ||||||
which levels are used. Levels can be referred by label or position. | ||||||
drop_level : boolean, default True | ||||||
drop_level : bool, default True | ||||||
If False, returns object with same levels as self. | ||||||
|
||||||
Examples | ||||||
-------- | ||||||
>>> df | ||||||
A B C | ||||||
a 4 5 2 | ||||||
b 4 0 9 | ||||||
c 9 7 3 | ||||||
>>> df.xs('a') | ||||||
A 4 | ||||||
B 5 | ||||||
C 2 | ||||||
Name: a | ||||||
>>> df.xs('C', axis=1) | ||||||
a 2 | ||||||
b 9 | ||||||
c 3 | ||||||
Name: C | ||||||
|
||||||
>>> df | ||||||
A B C D | ||||||
first second third | ||||||
bar one 1 4 1 8 9 | ||||||
two 1 7 5 5 0 | ||||||
baz one 1 6 6 8 0 | ||||||
three 2 5 3 5 3 | ||||||
>>> df.xs(('baz', 'three')) | ||||||
A B C D | ||||||
third | ||||||
2 5 3 5 3 | ||||||
>>> df.xs('one', level=1) | ||||||
A B C D | ||||||
first third | ||||||
bar 1 4 1 8 9 | ||||||
baz 1 6 6 8 0 | ||||||
>>> df.xs(('baz', 2), level=[0, 'third']) | ||||||
A B C D | ||||||
second | ||||||
three 5 3 5 3 | ||||||
|
||||||
Returns | ||||||
------- | ||||||
xs : Series or DataFrame | ||||||
Series or DataFrame of the cross-section (row(s) or column(s)) from | ||||||
the original Series/DataFrame. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The format of the returns section is:
|
||||||
|
||||||
See Also | ||||||
-------- | ||||||
DataFrame.loc : Access a group of rows and columns | ||||||
by label(s) or a boolean array. | ||||||
DataFrame.iloc : Purely integer-location based indexing | ||||||
for selection by position. | ||||||
|
||||||
Notes | ||||||
----- | ||||||
xs is only for getting, not setting values. | ||||||
`xs` can not be used to set values. | ||||||
|
||||||
MultiIndex Slicers is a generic way to get/set values on any level or | ||||||
levels. It is a superset of xs functionality, see | ||||||
:ref:`MultiIndex Slicers <advanced.mi_slicers>` | ||||||
levels. It is a superset of `xs` functionality, see | ||||||
:ref:`MultiIndex Slicers <advanced.mi_slicers>`. | ||||||
|
||||||
Examples | ||||||
datapythonista marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
-------- | ||||||
>>> d = {'num_legs': [4, 4, 2, 2], | ||||||
... 'num_wings': [0, 0, 2, 2], | ||||||
... 'class': ['mammal', 'mammal', 'mammal', 'bird'], | ||||||
... 'animal': ['cat', 'dog', 'bat', 'penguin'], | ||||||
... 'locomotion': ['walks', 'walks', 'flies', 'walks']} | ||||||
>>> df = pd.DataFrame(data=d) | ||||||
>>> df = df.set_index(['class', 'animal', 'locomotion']) | ||||||
>>> df | ||||||
num_legs num_wings | ||||||
class animal locomotion | ||||||
mammal cat walks 4 0 | ||||||
dog walks 4 0 | ||||||
bat flies 2 2 | ||||||
bird penguin walks 2 2 | ||||||
>>> df.xs('mammal') | ||||||
num_legs num_wings | ||||||
animal locomotion | ||||||
cat walks 4 0 | ||||||
dog walks 4 0 | ||||||
bat flies 2 2 | ||||||
>>> df.xs('num_wings', axis=1) | ||||||
datapythonista marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
class animal locomotion | ||||||
mammal cat walks 0 | ||||||
dog walks 0 | ||||||
bat flies 2 | ||||||
bird penguin walks 2 | ||||||
Name: num_wings, dtype: int64 | ||||||
>>> df.xs(('mammal', 'dog')) | ||||||
num_legs num_wings | ||||||
locomotion | ||||||
walks 4 0 | ||||||
>>> df.xs('num_wings', axis=1) | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think we're repeating this, right? See two commands above. |
||||||
class animal locomotion | ||||||
mammal cat walks 0 | ||||||
dog walks 0 | ||||||
bat flies 2 | ||||||
bird penguin walks 2 | ||||||
Name: num_wings, dtype: int64 | ||||||
>>> df.xs(('mammal', 'bat')) | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think this shows the same use case than |
||||||
num_legs num_wings | ||||||
locomotion | ||||||
flies 2 2 | ||||||
>>> df.xs('cat', level=1) | ||||||
num_legs num_wings | ||||||
class locomotion | ||||||
mammal walks 4 0 | ||||||
>>> df.xs(('bird', 'walks'), level=[0, 'locomotion']) | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Really nice example. And the previous too. Not sure if it'd make it clearer for the readers with examples that returns more than one value? like Up to you, whatever you think would help more a newbie to pandas. |
||||||
num_legs num_wings | ||||||
animal | ||||||
penguin 2 2 | ||||||
""" | ||||||
axis = self._get_axis_number(axis) | ||||||
labels = self._get_axis(axis) | ||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.