Skip to content

Commit e38c019

Browse files
DOC: Added series operation name/example to flex_doc
1 parent 12a0dc4 commit e38c019

File tree

1 file changed

+59
-38
lines changed

1 file changed

+59
-38
lines changed

pandas/core/ops.py

+59-38
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ def make_invalid_op(name):
211211
-------
212212
invalid_op : function
213213
"""
214+
214215
def invalid_op(self, other=None):
215216
raise TypeError("cannot perform {name} with this index type: "
216217
"{typ}".format(name=name, typ=type(self).__name__))
@@ -486,66 +487,104 @@ def _get_op_name(op, special):
486487
e NaN -4.0 NaN
487488
"""
488489

490+
_mul_example_SERIES = """
491+
>>> a = pd.Series([1, 1, 1, np.nan], index=['a', 'b', 'c', 'd'])
492+
>>> a
493+
a 1.0
494+
b 1.0
495+
c 1.0
496+
d NaN
497+
dtype: float64
498+
>>> b = pd.Series([1, np.nan, 1, np.nan], index=['a', 'b', 'd', 'e'])
499+
>>> b
500+
a 1.0
501+
b NaN
502+
d 1.0
503+
e NaN
504+
dtype: float64
505+
>>> a.multiply(b, fill_value=0)
506+
a 1.0
507+
b 0.0
508+
c 0.0
509+
d 0.0
510+
e NaN
511+
dtype: float64
512+
"""
513+
489514
_op_descriptions = {
490515
# Arithmetic Operators
491516
'add': {'op': '+',
492517
'desc': 'Addition',
493518
'reverse': 'radd',
494-
'df_examples': _add_example_FRAME},
519+
'df_examples': _add_example_FRAME,
520+
'series_examples': None},
495521
'sub': {'op': '-',
496522
'desc': 'Subtraction',
497523
'reverse': 'rsub',
498-
'df_examples': _sub_example_FRAME},
524+
'df_examples': _sub_example_FRAME,
525+
'series_examples': None},
499526
'mul': {'op': '*',
500527
'desc': 'Multiplication',
501528
'reverse': 'rmul',
502-
'df_examples': None},
529+
'df_examples': None,
530+
'series_examples': _mul_example_SERIES},
503531
'mod': {'op': '%',
504532
'desc': 'Modulo',
505533
'reverse': 'rmod',
506-
'df_examples': _mod_example_FRAME},
534+
'df_examples': _mod_example_FRAME,
535+
'series_examples': None},
507536
'pow': {'op': '**',
508537
'desc': 'Exponential power',
509538
'reverse': 'rpow',
510-
'df_examples': None},
539+
'df_examples': None,
540+
'series_examples': None},
511541
'truediv': {'op': '/',
512542
'desc': 'Floating division',
513543
'reverse': 'rtruediv',
514-
'df_examples': None},
544+
'df_examples': None,
545+
'series_examples': None},
515546
'floordiv': {'op': '//',
516547
'desc': 'Integer division',
517548
'reverse': 'rfloordiv',
518-
'df_examples': None},
549+
'df_examples': None,
550+
'series_examples': None},
519551
'divmod': {'op': 'divmod',
520552
'desc': 'Integer division and modulo',
521553
'reverse': None,
522-
'df_examples': None},
554+
'df_examples': None,
555+
'series_examples': None},
523556

524557
# Comparison Operators
525558
'eq': {'op': '==',
526559
'desc': 'Equal to',
527560
'reverse': None,
528-
'df_examples': None},
561+
'df_examples': None,
562+
'series_examples': None},
529563
'ne': {'op': '!=',
530564
'desc': 'Not equal to',
531565
'reverse': None,
532-
'df_examples': None},
566+
'df_examples': None,
567+
'series_examples': None},
533568
'lt': {'op': '<',
534569
'desc': 'Less than',
535570
'reverse': None,
536-
'df_examples': None},
571+
'df_examples': None,
572+
'series_examples': None},
537573
'le': {'op': '<=',
538574
'desc': 'Less than or equal to',
539575
'reverse': None,
540-
'df_examples': None},
576+
'df_examples': None,
577+
'series_examples': None},
541578
'gt': {'op': '>',
542579
'desc': 'Greater than',
543580
'reverse': None,
544-
'df_examples': None},
581+
'df_examples': None,
582+
'series_examples': None},
545583
'ge': {'op': '>=',
546584
'desc': 'Greater than or equal to',
547585
'reverse': None,
548-
'df_examples': None}}
586+
'df_examples': None,
587+
'series_examples': None}}
549588

550589
_op_names = list(_op_descriptions.keys())
551590
for key in _op_names:
@@ -580,31 +619,12 @@ def _get_op_name(op, special):
580619
581620
Examples
582621
--------
583-
>>> a = pd.Series([1, 1, 1, np.nan], index=['a', 'b', 'c', 'd'])
584-
>>> a
585-
a 1.0
586-
b 1.0
587-
c 1.0
588-
d NaN
589-
dtype: float64
590-
>>> b = pd.Series([1, np.nan, 1, np.nan], index=['a', 'b', 'd', 'e'])
591-
>>> b
592-
a 1.0
593-
b NaN
594-
d 1.0
595-
e NaN
596-
dtype: float64
597-
>>> a.add(b, fill_value=0)
598-
a 2.0
599-
b 1.0
600-
c 1.0
601-
d 1.0
602-
e NaN
603-
dtype: float64
622+
{series_examples}
604623
605624
See also
606625
--------
607626
Series.{reverse}
627+
608628
"""
609629

610630
_arith_doc_FRAME = """
@@ -690,7 +710,6 @@ def _get_op_name(op, special):
690710
Panel.{reverse}
691711
"""
692712

693-
694713
_agg_doc_PANEL = """
695714
Wrapper method for {op_name}
696715
@@ -732,7 +751,8 @@ def _make_flex_doc(op_name, typ):
732751
if typ == 'series':
733752
base_doc = _flex_doc_SERIES
734753
doc = base_doc.format(desc=op_desc['desc'], op_name=op_name,
735-
equiv=equiv, reverse=op_desc['reverse'])
754+
equiv=equiv, reverse=op_desc['reverse'],
755+
series_examples=op_desc['series_examples'])
736756
elif typ == 'dataframe':
737757
base_doc = _flex_doc_FRAME
738758
doc = base_doc.format(desc=op_desc['desc'], op_name=op_name,
@@ -1086,6 +1106,7 @@ def add_special_arithmetic_methods(cls):
10861106
_, _, arith_method, comp_method, bool_method = _get_method_wrappers(cls)
10871107
new_methods = _create_methods(cls, arith_method, comp_method, bool_method,
10881108
special=True)
1109+
10891110
# inplace operators (I feel like these should get passed an `inplace=True`
10901111
# or just be removed
10911112

@@ -1296,7 +1317,7 @@ def wrapper(left, right):
12961317
"{op}".format(typ=type(left).__name__, op=str_rep))
12971318

12981319
elif (is_extension_array_dtype(left) or
1299-
(is_extension_array_dtype(right) and not is_scalar(right))):
1320+
(is_extension_array_dtype(right) and not is_scalar(right))):
13001321
# GH#22378 disallow scalar to exclude e.g. "category", "Int64"
13011322
return dispatch_to_extension_op(op, left, right)
13021323

0 commit comments

Comments
 (0)