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: update the pandas.DataFrame.all docstring #20216

Merged
merged 13 commits into from
Mar 11, 2018
73 changes: 63 additions & 10 deletions pandas/core/generic.py
Original file line number Diff line number Diff line change
Expand Up @@ -7584,11 +7584,10 @@ def _add_numeric_operations(cls):
cls.any = _make_logical_function(
cls, 'any', name, name2, axis_descr,
'Return whether any element is True over requested axis',
nanops.nanany)
nanops.nanany, '', '')
Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe remove these so they don't conflict with the other PR.

Copy link
Contributor Author

@mlaforet mlaforet Mar 10, 2018

Choose a reason for hiding this comment

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

@TomAugspurger If I do this an error

Traceback (most recent call last):
  File "../scripts/validate_docstrings.py", line 37, in <module>
    import pandas
  File "/Users/marconlaforet/pandas-dev/pandas/__init__.py", line 42, in <module>
    from pandas.core.api import *
  File "/Users/marconlaforet/pandas-dev/pandas/core/api.py", line 10, in <module>
    from pandas.core.groupby import Grouper
  File "/Users/marconlaforet/pandas-dev/pandas/core/groupby.py", line 48, in <module>
    from pandas.core.frame import DataFrame
  File "/Users/marconlaforet/pandas-dev/pandas/core/frame.py", line 75, in <module>
    from pandas.core.series import Series
  File "/Users/marconlaforet/pandas-dev/pandas/core/series.py", line 3202, in <module>
    Series._add_numeric_operations()
  File "/Users/marconlaforet/pandas-dev/pandas/core/generic.py", line 7530, in _add_numeric_operations
    nanops.nanany)
TypeError: _make_logical_function() missing 2 required positional arguments: 'examples' and 'see_also'```

Copy link
Member

Choose a reason for hiding this comment

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

Yes, you can keep this. Just depending on which one of the two PRs is merged first, you might need to solve the conflict on the other. But that should be no problem

cls.all = _make_logical_function(
cls, 'all', name, name2, axis_descr,
'Return whether all elements are True over requested axis',
nanops.nanall)
cls, 'all', name, name2, axis_descr, _all_doc,
nanops.nanall, _all_examples, _all_see_also)

@Substitution(outname='mad',
desc="Return the mean absolute deviation of the values "
Expand Down Expand Up @@ -7845,25 +7844,78 @@ def _doc_parms(cls):
%(outname)s : %(name1)s or %(name2)s (if level specified)\n"""

_bool_doc = """

%(desc)s

Parameters
----------
axis : %(axis_descr)s
skipna : boolean, default True
Exclude NA/null values. If an entire row/column is NA, the result
will be NA
will be NA.
level : int or level name, default None
If the axis is a MultiIndex (hierarchical), count along a
particular level, collapsing into a %(name1)s
particular level, collapsing into a %(name1)s.
bool_only : boolean, default None
Include only boolean columns. If None, will attempt to use everything,
then use only boolean data. Not implemented for Series.
**kwargs : any, default None
Additional keywords have no affect but might be accepted for
compatibility with numpy.

Returns
-------
%(outname)s : %(name1)s or %(name2)s (if level specified)\n"""
%(outname)s : %(name1)s or %(name2)s (if level specified)

%(examples)s
%(see_also)s"""

_all_doc = """\
Return whether all elements are True over series or dataframe axis.

Returns True if all elements within a series or along a dataframe
axis are non-zero, not-empty or not-False."""

_all_examples = """\
Examples
--------
Series

>>> pd.Series([True, True]).all()
True
>>> pd.Series([True, False]).all()
False

Dataframes

Create a dataframe from a dictionary.

>>> df = pd.DataFrame({'col1': [True, True], 'col2': [True, False]})
>>> df
col1 col2
0 True True
1 True False

Default behaviour checks if column-wise values all return True.

>>> df.all()
col1 True
col2 False
dtype: bool

Adding axis=1 argument will check if row-wise values all return True.

>>> df.all(axis=1)
0 True
1 False
dtype: bool
"""

_all_see_also = """\
See also
--------
pandas.Series.all : Return True if all elements are True
pandas.DataFrame.any : Return True if one (or more) elements are True
"""

_cnum_doc = """

Expand Down Expand Up @@ -8046,9 +8098,10 @@ def cum_func(self, axis=None, skipna=True, *args, **kwargs):
return set_function_name(cum_func, name, cls)


def _make_logical_function(cls, name, name1, name2, axis_descr, desc, f):
def _make_logical_function(cls, name, name1, name2, axis_descr, desc, f,
examples, see_also):
@Substitution(outname=name, desc=desc, name1=name1, name2=name2,
axis_descr=axis_descr)
axis_descr=axis_descr, examples=examples, see_also=see_also)
@Appender(_bool_doc)
def logical_func(self, axis=None, bool_only=None, skipna=None, level=None,
**kwargs):
Expand Down