Skip to content

Commit 650eb4f

Browse files
DOC:Remove hard-coded example from _flex_doc_SERIES and allow _make_flex_doc to inject examples from _op_desc (pandas-dev#24589)
1 parent 42b4c97 commit 650eb4f

File tree

1 file changed

+130
-54
lines changed

1 file changed

+130
-54
lines changed

pandas/core/ops.py

+130-54
Original file line numberDiff line numberDiff line change
@@ -384,57 +384,175 @@ def _get_op_name(op, special):
384384
# -----------------------------------------------------------------------------
385385
# Docstring Generation and Templates
386386

387+
_add_example_SERIES = """
388+
Examples
389+
--------
390+
>>> a = pd.Series([1, 1, 1, np.nan], index=['a', 'b', 'c', 'd'])
391+
>>> a
392+
a 1.0
393+
b 1.0
394+
c 1.0
395+
d NaN
396+
dtype: float64
397+
>>> b = pd.Series([1, np.nan, 1, np.nan], index=['a', 'b', 'd', 'e'])
398+
>>> b
399+
a 1.0
400+
b NaN
401+
d 1.0
402+
e NaN
403+
dtype: float64
404+
>>> a.add(b, fill_value=0)
405+
a 2.0
406+
b 1.0
407+
c 1.0
408+
d 1.0
409+
e NaN
410+
dtype: float64
411+
"""
412+
413+
_sub_example_SERIES = """
414+
Examples
415+
--------
416+
>>> a = pd.Series([1, 1, 1, np.nan], index=['a', 'b', 'c', 'd'])
417+
>>> a
418+
a 1.0
419+
b 1.0
420+
c 1.0
421+
d NaN
422+
dtype: float64
423+
>>> b = pd.Series([1, np.nan, 1, np.nan], index=['a', 'b', 'd', 'e'])
424+
>>> b
425+
a 1.0
426+
b NaN
427+
d 1.0
428+
e NaN
429+
dtype: float64
430+
>>> a.subtract(b, fill_value=0)
431+
a 0.0
432+
b 1.0
433+
c 1.0
434+
d -1.0
435+
e NaN
436+
dtype: float64
437+
"""
438+
439+
_mul_example_SERIES = """
440+
Examples
441+
--------
442+
>>> a = pd.Series([1, 1, 1, np.nan], index=['a', 'b', 'c', 'd'])
443+
>>> a
444+
a 1.0
445+
b 1.0
446+
c 1.0
447+
d NaN
448+
dtype: float64
449+
>>> b = pd.Series([1, np.nan, 1, np.nan], index=['a', 'b', 'd', 'e'])
450+
>>> b
451+
a 1.0
452+
b NaN
453+
d 1.0
454+
e NaN
455+
dtype: float64
456+
>>> a.multiply(b)
457+
a 1.0
458+
b NaN
459+
c NaN
460+
d NaN
461+
e NaN
462+
dtype: float64
463+
"""
464+
465+
_div_example_SERIES = """
466+
Examples
467+
--------
468+
>>> a = pd.Series([1, 1, 1, np.nan], index=['a', 'b', 'c', 'd'])
469+
>>> a
470+
a 1.0
471+
b 1.0
472+
c 1.0
473+
d NaN
474+
dtype: float64
475+
>>> b = pd.Series([1, np.nan, 1, np.nan], index=['a', 'b', 'd', 'e'])
476+
>>> b
477+
a 1.0
478+
b NaN
479+
d 1.0
480+
e NaN
481+
dtype: float64
482+
>>> a.divide(b, fill_value=0)
483+
a 1.0
484+
b inf
485+
c inf
486+
d 0.0
487+
e NaN
488+
dtype: float64
489+
"""
490+
387491
_op_descriptions = {
388492
# Arithmetic Operators
389493
'add': {'op': '+',
390494
'desc': 'Addition',
391-
'reverse': 'radd'},
495+
'reverse': 'radd',
496+
'series_examples': _add_example_SERIES},
392497
'sub': {'op': '-',
393498
'desc': 'Subtraction',
394-
'reverse': 'rsub'},
499+
'reverse': 'rsub',
500+
'series_examples': _sub_example_SERIES},
395501
'mul': {'op': '*',
396502
'desc': 'Multiplication',
397503
'reverse': 'rmul',
504+
'series_examples': _mul_example_SERIES,
398505
'df_examples': None},
399506
'mod': {'op': '%',
400507
'desc': 'Modulo',
401-
'reverse': 'rmod'},
508+
'reverse': 'rmod',
509+
'series_examples': None},
402510
'pow': {'op': '**',
403511
'desc': 'Exponential power',
404512
'reverse': 'rpow',
513+
'series_examples': None,
405514
'df_examples': None},
406515
'truediv': {'op': '/',
407516
'desc': 'Floating division',
408517
'reverse': 'rtruediv',
518+
'series_examples': _div_example_SERIES,
409519
'df_examples': None},
410520
'floordiv': {'op': '//',
411521
'desc': 'Integer division',
412522
'reverse': 'rfloordiv',
523+
'series_examples': None,
413524
'df_examples': None},
414525
'divmod': {'op': 'divmod',
415526
'desc': 'Integer division and modulo',
416527
'reverse': 'rdivmod',
528+
'series_examples': None,
417529
'df_examples': None},
418530

419531
# Comparison Operators
420532
'eq': {'op': '==',
421533
'desc': 'Equal to',
422-
'reverse': None},
534+
'reverse': None,
535+
'series_examples': None},
423536
'ne': {'op': '!=',
424537
'desc': 'Not equal to',
425-
'reverse': None},
538+
'reverse': None,
539+
'series_examples': None},
426540
'lt': {'op': '<',
427541
'desc': 'Less than',
428-
'reverse': None},
542+
'reverse': None,
543+
'series_examples': None},
429544
'le': {'op': '<=',
430545
'desc': 'Less than or equal to',
431-
'reverse': None},
546+
'reverse': None,
547+
'series_examples': None},
432548
'gt': {'op': '>',
433549
'desc': 'Greater than',
434-
'reverse': None},
550+
'reverse': None,
551+
'series_examples': None},
435552
'ge': {'op': '>=',
436553
'desc': 'Greater than or equal to',
437-
'reverse': None}
554+
'reverse': None,
555+
'series_examples': None}
438556
}
439557

440558
_op_names = list(_op_descriptions.keys())
@@ -473,50 +591,7 @@ def _get_op_name(op, special):
473591
--------
474592
Series.{reverse}
475593
476-
Examples
477-
--------
478-
>>> a = pd.Series([1, 1, 1, np.nan], index=['a', 'b', 'c', 'd'])
479-
>>> a
480-
a 1.0
481-
b 1.0
482-
c 1.0
483-
d NaN
484-
dtype: float64
485-
>>> b = pd.Series([1, np.nan, 1, np.nan], index=['a', 'b', 'd', 'e'])
486-
>>> b
487-
a 1.0
488-
b NaN
489-
d 1.0
490-
e NaN
491-
dtype: float64
492-
>>> a.add(b, fill_value=0)
493-
a 2.0
494-
b 1.0
495-
c 1.0
496-
d 1.0
497-
e NaN
498-
dtype: float64
499-
>>> a.subtract(b, fill_value=0)
500-
a 0.0
501-
b 1.0
502-
c 1.0
503-
d -1.0
504-
e NaN
505-
dtype: float64
506-
>>> a.multiply(b)
507-
a 1.0
508-
b NaN
509-
c NaN
510-
d NaN
511-
e NaN
512-
dtype: float64
513-
>>> a.divide(b, fill_value=0)
514-
a 1.0
515-
b inf
516-
c inf
517-
d 0.0
518-
e NaN
519-
dtype: float64
594+
{examples}
520595
"""
521596

522597
_arith_doc_FRAME = """
@@ -907,7 +982,8 @@ def _make_flex_doc(op_name, typ):
907982
if typ == 'series':
908983
base_doc = _flex_doc_SERIES
909984
doc = base_doc.format(desc=op_desc['desc'], op_name=op_name,
910-
equiv=equiv, reverse=op_desc['reverse'])
985+
equiv=equiv, reverse=op_desc['reverse'],
986+
examples=op_desc['series_examples'])
911987
elif typ == 'dataframe':
912988
base_doc = _flex_doc_FRAME
913989
doc = base_doc.format(desc=op_desc['desc'], op_name=op_name,

0 commit comments

Comments
 (0)