BUG: Fillna limit with axis=1 (original) (raw)

Pandas version checks

Reproducible Example

import pandas as pd import numpy as np

df = pd.DataFrame({'col1': ['5', 0, np.NaN, 10, np.NaN], 'col2': [7, np.NaN, np.NaN, 5, 3], 'col3': [12, np.NaN, 1, 2, 0], 'col4': [np.NaN, 1, 1, np.NaN, 18]})

col1 col2 col3 col4 0 5 7.0 12.0 NaN 1 0 NaN NaN 1.0 2 NaN NaN 1.0 1.0 3 10 5.0 2.0 NaN 4 NaN 3.0 0.0 18.0

Issue Description

The following code does not appear to give the correct results. It appears that the axis parameter is ignored.

df.fillna(50,limit=1,axis=1)

   col1  col2  col3  col4
0   5.0   7.0  12.0  50.0
1   0.0  50.0  50.0   1.0
2  50.0   NaN   1.0   1.0
3  10.0   5.0   2.0   NaN
4   NaN   3.0   0.0  18.0

However, if just one value in the df is a string value, it appears to work correctly. I have made the first value in the dataframe a string value.

df = pd.DataFrame({'col1': ['5', 0, np.NaN, 10, np.NaN], 'col2': [7, np.NaN, np.NaN, 5, 3], 'col3': [12, np.NaN, 1, 2, 0], 'col4': [np.NaN, 1, 1, np.NaN, 18]})

using the same code as above, it now appears that the axis parameter is not ignored.

df.fillna(50,limit=1,axis=1)

   col1  col2  col3  col4
0     5   7.0  12.0    50
1   0.0  50.0   NaN   1.0
2  50.0   NaN   1.0   1.0
3  10.0   5.0   2.0  50.0
4  50.0   3.0   0.0  18.0

Expected Behavior

fillna() should not ignore the axis parameter, and each NaN value should be filled with 50 along axis = 1

Installed Versions

1.4.3