pandas.Series.combine#

Series.combine(other, func, fill_value=None)[source]#

Combine the Series with a Series or scalar according to func.

Combine the Series and other using func to perform elementwise selection for combined Series. fill_value is assumed when value is not present at some index from one of the two Series being combined. The result index is the union of the two indexes. If a label is duplicated, its occurrences are paired in order: the first occurrence in the Series with the first in other, the second with the second, and so on; an occurrence with no counterpart is paired with fill_value.

Parameters:
otherSeries or scalar

The value(s) to be combined with the Series.

funcfunction

Function that takes two scalars as inputs and returns an element.

fill_valuescalar, optional

The value to assume when an index is missing from one Series or the other. The default specifies to use the appropriate NA value for the underlying dtype of the Series.

Returns:
Series

The result of combining the Series with the other object.

See also

Series.combine_first

Combine Series values, choosing the calling Series’ values first.

Examples

Consider 2 Datasets s1 and s2 containing highest clocked speeds of different birds.

>>> s1 = pd.Series({"falcon": 330.0, "eagle": 160.0})
>>> s1
falcon    330.0
eagle     160.0
dtype: float64
>>> s2 = pd.Series({"falcon": 345.0, "eagle": 200.0, "duck": 30.0})
>>> s2
falcon    345.0
eagle     200.0
duck       30.0
dtype: float64

Now, to combine the two datasets and view the highest speeds of the birds across the two datasets

>>> s1.combine(s2, max)
duck        NaN
eagle     200.0
falcon    345.0
dtype: float64

In the previous example, the resulting value for duck is missing, because the maximum of a NaN and a float is a NaN. So, in the example, we set fill_value=0, so the maximum value returned will be the value from some dataset.

>>> s1.combine(s2, max, fill_value=0)
duck       30.0
eagle     200.0
falcon    345.0
dtype: float64

Occurrences of a duplicated label are paired in order. Below, the first "a" in s3 is combined with the "a" in s4, while the second has no counterpart and is paired with fill_value.

>>> s3 = pd.Series([1, 2, 3], index=["a", "a", "b"])
>>> s4 = pd.Series([10, 20], index=["a", "b"])
>>> s3.combine(s4, lambda x, y: x + y, fill_value=0)
a    11
a     2
b    23
dtype: int64