熊猫fillna不工作

Gin*_*ger 9 python pandas

我有一个带有nans的数据帧:

>>>df.head()
Out[1]: 
            JPM US SMALLER COMPANIES C ACC
1990-01-02                             NaN
1990-01-03                             NaN
1990-01-04                             NaN
1990-01-05                             NaN
1990-01-08                             NaN
Run Code Online (Sandbox Code Playgroud)

我有另一个数据框,其中包含值:

>>>t.head()
Out[1]: 
1990-01-02    51.95
1990-01-03    52.63
1990-01-04    53.04
1990-01-05    52.07
1990-01-08    51.73
Name: JPM US SMALLER COMPANIES C ACC, dtype: float64
Run Code Online (Sandbox Code Playgroud)

不幸的是,df.fillna似乎不适合我:

>>>df.fillna( t ).head()
Out[1]: 
            JPM US SMALLER COMPANIES C ACC
1990-01-02                             NaN
1990-01-03                             NaN
1990-01-04                             NaN
1990-01-05                             NaN
1990-01-08                             NaN

[5 rows x 1 columns]
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我在熊猫0.13.1上

zin*_*ing 37

你需要 inplace

df[1].fillna(0, inplace=True)
Run Code Online (Sandbox Code Playgroud)

  • 以便“df”对象被**就地**修改,而不是创建它的副本并修改它 (3认同)

Aku*_*Aku 9

或者

df = df.replace(np.nan, 0)#或您认为合适的任何其他值

当我在 Na 操作之后应用某些 str.replace() 操作时, df.replace(np.nan, 0) 或 df.fillna(0) 让我感到厌烦。所以请注意你的命令顺序 -> 第一个 str .replace() 比 fillna()


小智 5

您需要分配值 df = df.fillna( t )