BUG: df.fillna(dict, inplace=True) triggers FutureWarning in 1.5.0rc0 when DataFrame is empty
See original GitHub issuePandas version checks
-
I have checked that this issue has not already been reported.
-
I have confirmed this bug exists on the latest version of pandas.
-
I have confirmed this bug exists on the main branch of pandas.
Reproducible Example
import pandas as pd
df = pd.DataFrame(data=[[None, None], [None,None]], columns=['A', 'B'])
df.fillna({'A': 1, 'B': 2}, inplace=True)
Issue Description
With the most recent development version 1.5.0rc0, I see that the code example raises the following warning:
FutureWarning: In a future version,
df.iloc[:, i] = newvalswill attempt to set the values inplace instead of always setting a new array. To retain the old behavior, use either
df[df.columns[i]] = newvalsor, if columns are non-unique,
df.isetitem(i, newvals)``
The df. fillna() API should not use code that is ambiguous or deprecated.
Expected Behavior
df.fillna() should do its job, silently.
Installed Versions
INSTALLED VERSIONS
------------------
commit : 224458ee25d92ccdf289d1ae2741d178df4f323e
python : 3.8.13.final.0
python-bits : 64
OS : Darwin
OS-release : 21.6.0
Version : Darwin Kernel Version 21.6.0: Wed Aug 10 14:25:27 PDT 2022; root:xnu-8020.141.5~2/RELEASE_X86_64
machine : x86_64
processor : i386
byteorder : little
LC_ALL : None
LANG : en_US.UTF-8
LOCALE : None.UTF-8
pandas : 1.5.0rc0
numpy : 1.23.2
pytz : 2021.1
dateutil : 2.8.2
setuptools : 56.0.0
pip : 22.2.2
Cython : None
pytest : 7.1.2
hypothesis : None
sphinx : 1.8.6
blosc : None
feather : None
xlsxwriter : None
lxml.etree : 4.9.1
html5lib : None
pymysql : None
psycopg2 : None
jinja2 : 2.11.3
IPython : 7.21.0
pandas_datareader: None
bs4 : None
bottleneck : None
brotli : None
fastparquet : None
fsspec : None
gcsfs : None
matplotlib : 3.4.1
numba : None
numexpr : None
odfpy : None
openpyxl : 3.0.10
pandas_gbq : None
pyarrow : None
pyreadstat : None
pyxlsb : None
s3fs : None
scipy : None
snappy : None
sqlalchemy : 1.4.40
tables : None
tabulate : 0.8.10
xarray : None
xlrd : None
xlwt : None
zstandard : None
tzdata : None
Issue Analytics
- State:
- Created a year ago
- Comments:15 (5 by maintainers)
Top Results From Across the Web
pandas.DataFrame.fillna — pandas 1.5.2 documentation
Fill NA /NaN values using the specified method. Parameters. valuescalar, dict, Series, or DataFrame. Value to use to fill holes (e.g. 0), ...
Read more >pandas fillna not working - Stack Overflow
In the case where you are using a DataFrame, you can use DataFrame.where to use another frame's values to replace the values when...
Read more >Solve Pandas "ValueError: cannot reindex from a duplicate axis"
Let's find out what causes it and how to solve it. The Python error I'm talking about is: ValueError: cannot reindex from a...
Read more >Pandas DataFrame fillna() Method - W3Schools
Required, Specifies the value to replace the NULL values with. This can also be values for the entire row or column. method, 'backfill'...
Read more >Handling Missing Data in Pandas: NaN Values Explained
Another way to say that is to show only rows or columns that are not empty. Here we fill row c with NaN:...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
I’m using pandas 1.5.2 on MacOS 13.0.1, with Python@3.11.0 from Homebrew, and I can consistently reproduce the bug with the code below:
Three conditions together for the bug:
'col1'
isobject
dtype at first, not int or float.convert_dtypes()
method.inplace=True
infillna()
.Maybe some problem associated with string dtype?
And I also investigate other circumstances.
Using
np.nan
instead ofpd.NA
the problem will still be there.Create a Series using the same list, and using
fillna()
method of Series will not trigger the bug. Codes below:Maybe some help.
I confirm that also in my case (see above) if I use df.convert_dtypes() I can reproduce the warning. However, in my original code (which I tried to summarize), I am not using convert_dtypes() explicitly, and I am getting the warning.