Skip to content

Commit 4271757

Browse files
alysivjijreback
authored andcommitted
DOC: update pandas/core/ops.py docstring template to accept examples (#20246)
1 parent 080ef0c commit 4271757

File tree

1 file changed

+71
-46
lines changed

1 file changed

+71
-46
lines changed

pandas/core/ops.py

+71-46
Original file line numberDiff line numberDiff line change
@@ -343,50 +343,93 @@ def _get_op_name(op, special):
343343
# -----------------------------------------------------------------------------
344344
# Docstring Generation and Templates
345345

346+
_add_example_FRAME = """
347+
>>> a = pd.DataFrame([1, 1, 1, np.nan], index=['a', 'b', 'c', 'd'],
348+
columns=['one'])
349+
>>> a
350+
one
351+
a 1.0
352+
b 1.0
353+
c 1.0
354+
d NaN
355+
>>> b = pd.DataFrame(dict(one=[1, np.nan, 1, np.nan],
356+
two=[np.nan, 2, np.nan, 2]),
357+
index=['a', 'b', 'd', 'e'])
358+
>>> b
359+
one two
360+
a 1.0 NaN
361+
b NaN 2.0
362+
d 1.0 NaN
363+
e NaN 2.0
364+
>>> a.add(b, fill_value=0)
365+
one two
366+
a 2.0 NaN
367+
b 1.0 2.0
368+
c 1.0 NaN
369+
d 1.0 NaN
370+
e NaN 2.0
371+
"""
372+
346373
_op_descriptions = {
374+
# Arithmetic Operators
347375
'add': {'op': '+',
348376
'desc': 'Addition',
349-
'reverse': 'radd'},
377+
'reverse': 'radd',
378+
'df_examples': _add_example_FRAME},
350379
'sub': {'op': '-',
351380
'desc': 'Subtraction',
352-
'reverse': 'rsub'},
381+
'reverse': 'rsub',
382+
'df_examples': None},
353383
'mul': {'op': '*',
354384
'desc': 'Multiplication',
355-
'reverse': 'rmul'},
385+
'reverse': 'rmul',
386+
'df_examples': None},
356387
'mod': {'op': '%',
357388
'desc': 'Modulo',
358-
'reverse': 'rmod'},
389+
'reverse': 'rmod',
390+
'df_examples': None},
359391
'pow': {'op': '**',
360392
'desc': 'Exponential power',
361-
'reverse': 'rpow'},
393+
'reverse': 'rpow',
394+
'df_examples': None},
362395
'truediv': {'op': '/',
363396
'desc': 'Floating division',
364-
'reverse': 'rtruediv'},
397+
'reverse': 'rtruediv',
398+
'df_examples': None},
365399
'floordiv': {'op': '//',
366400
'desc': 'Integer division',
367-
'reverse': 'rfloordiv'},
401+
'reverse': 'rfloordiv',
402+
'df_examples': None},
368403
'divmod': {'op': 'divmod',
369404
'desc': 'Integer division and modulo',
370-
'reverse': None},
405+
'reverse': None,
406+
'df_examples': None},
371407

408+
# Comparison Operators
372409
'eq': {'op': '==',
373-
'desc': 'Equal to',
374-
'reverse': None},
410+
'desc': 'Equal to',
411+
'reverse': None,
412+
'df_examples': None},
375413
'ne': {'op': '!=',
376-
'desc': 'Not equal to',
377-
'reverse': None},
414+
'desc': 'Not equal to',
415+
'reverse': None,
416+
'df_examples': None},
378417
'lt': {'op': '<',
379-
'desc': 'Less than',
380-
'reverse': None},
418+
'desc': 'Less than',
419+
'reverse': None,
420+
'df_examples': None},
381421
'le': {'op': '<=',
382-
'desc': 'Less than or equal to',
383-
'reverse': None},
422+
'desc': 'Less than or equal to',
423+
'reverse': None,
424+
'df_examples': None},
384425
'gt': {'op': '>',
385-
'desc': 'Greater than',
386-
'reverse': None},
426+
'desc': 'Greater than',
427+
'reverse': None,
428+
'df_examples': None},
387429
'ge': {'op': '>=',
388-
'desc': 'Greater than or equal to',
389-
'reverse': None}}
430+
'desc': 'Greater than or equal to',
431+
'reverse': None,
432+
'df_examples': None}}
390433

391434
_op_names = list(_op_descriptions.keys())
392435
for key in _op_names:
@@ -532,30 +575,7 @@ def _get_op_name(op, special):
532575
533576
Examples
534577
--------
535-
>>> a = pd.DataFrame([1, 1, 1, np.nan], index=['a', 'b', 'c', 'd'],
536-
columns=['one'])
537-
>>> a
538-
one
539-
a 1.0
540-
b 1.0
541-
c 1.0
542-
d NaN
543-
>>> b = pd.DataFrame(dict(one=[1, np.nan, 1, np.nan],
544-
two=[np.nan, 2, np.nan, 2]),
545-
index=['a', 'b', 'd', 'e'])
546-
>>> b
547-
one two
548-
a 1.0 NaN
549-
b NaN 2.0
550-
d 1.0 NaN
551-
e NaN 2.0
552-
>>> a.add(b, fill_value=0)
553-
one two
554-
a 2.0 NaN
555-
b 1.0 2.0
556-
c 1.0 NaN
557-
d 1.0 NaN
558-
e NaN 2.0
578+
{df_examples}
559579
560580
See also
561581
--------
@@ -622,14 +642,19 @@ def _make_flex_doc(op_name, typ):
622642

623643
if typ == 'series':
624644
base_doc = _flex_doc_SERIES
645+
doc = base_doc.format(desc=op_desc['desc'], op_name=op_name,
646+
equiv=equiv, reverse=op_desc['reverse'])
625647
elif typ == 'dataframe':
626648
base_doc = _flex_doc_FRAME
649+
doc = base_doc.format(desc=op_desc['desc'], op_name=op_name,
650+
equiv=equiv, reverse=op_desc['reverse'],
651+
df_examples=op_desc['df_examples'])
627652
elif typ == 'panel':
628653
base_doc = _flex_doc_PANEL
654+
doc = base_doc.format(desc=op_desc['desc'], op_name=op_name,
655+
equiv=equiv, reverse=op_desc['reverse'])
629656
else:
630657
raise AssertionError('Invalid typ argument.')
631-
doc = base_doc.format(desc=op_desc['desc'], op_name=op_name,
632-
equiv=equiv, reverse=op_desc['reverse'])
633658
return doc
634659

635660

0 commit comments

Comments
 (0)