Skip to content

Unexpected behavior with binary operators and fill_value #12723

Closed
@jcrist

Description

@jcrist

From dask/dask#1063. fill_value doesn't seem to apply if the argument to a binary operator is a constant, but works fine for other arguments:

In [1]: import pandas as pd

In [2]: df = pd.DataFrame(range(10), columns=['foo'])

In [3]: df2 = df.copy()

In [4]: df2.iloc[0] = None

In [5]: df2.add(2, fill_value=0)
Out[5]:
    foo
0   NaN
1   3.0
2   4.0
3   5.0
4   6.0
5   7.0
6   8.0
7   9.0
8  10.0
9  11.0

In [6]: df2.add(df, fill_value=0)
Out[6]:
    foo
0   0.0
1   2.0
2   4.0
3   6.0
4   8.0
5  10.0
6  12.0
7  14.0
8  16.0
9  18.0

In [7]: pd.__version__
Out[7]: u'0.18.0rc2+2.g19e40a0'

From the docstring I'd expect it to be equivalent to df2.fillna(0).add(2). If this is intended behavior, then the docstring should be updated to clarify this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugMissing-datanp.nan, pd.NaT, pd.NA, dropna, isnull, interpolate

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions