我有一个dataframe,里面有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
我有另一个dataframe,里面有值:
>>>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
不幸的是,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]
为什么会这样?我是Pandas0.13.1
6条答案
按热度按时间tpxzln5u1#
您需要
inplace=True
ctrmrzij2#
可选:
df = df.replace(np.nan, 0)
#或您认为合适的任何其他值df.replace(np.nan,0)或df.fillna(0)在Na操作后应用某些str.replace()操作时让我感到困惑。所以要注意命令的顺序-> first str.replace()than fillna()
xjreopfe3#
您需要指定值
df = df.fillna( t )
8cdiaqws4#
你有两个选择:
1)特定于每列
2)对于整个 Dataframe
cigdeys35#
检查
fillna()
在迭代列时不起作用的原因。创建一个包含列的DataFrame
并检查以下输出:前面的一个没有抛出错误,但没有填充NA值。评论似乎起作用了。
lnlaulya6#
我发现这是因为pandas的mode()函数现在输出一个有两列的 Dataframe 。因此,如果您不像#df[col].fillna(df[col].mode()[0],inplace = True)中那样添加[0],fillna()将不起作用,因为mode()函数不返回标量。