更改熊猫默认Fillna设置

时间:2019-10-03 19:28:02

标签: pandas default fillna

我想更改pandas的默认行为,以用float('nan')以外的其他内容填充空白元素,而无需修改源代码。在使用NaN创建了DataFrame之后,我可以轻松替换DataFrame.fillna() ,但想在之前更改所有DataFrames的行为他们甚至被实例化。

在我的应用程序中,我使用的库由于某种原因在float('nan')中出现Python时崩溃了,所以我的想法是更改pandas的默认填充,使{{1 }}永远不会出现。有没有办法更改默认行为?

编辑:

我尝试float('nan')无济于事

https://pandas.pydata.org/pandas-docs/stable/user_guide/options.html

https://pandas.pydata.org/pandas-docs/stable/user_guide/missing_data.html

1 个答案:

答案 0 :(得分:0)

pandas中缺少的数据由 NaN 表示。上面的选项pd.set_option('mode.use_inf_as_na', True)只是告诉pandas在计算中将inf识别为 NaN

例如,设置选项isna之后,现在将包含inf

In [7]: pd.DataFrame([np.inf, 2, 3, np.inf]).isna()                                                                               
Out[7]: 
       0
0  False
1  False
2  False
3  False

In [8]: pd.set_option('mode.use_inf_as_na', True)                                                                                 

In [9]: pd.DataFrame([np.inf, 2, 3, np.inf]).isna()                                                                               
Out[9]: 
       0
0   True
1  False
2  False
3   True

当前pandas没有上述功能,很抱歉不能真正解决您的问题。

如上面的评论所述,最好在初始化pd.DataFrame()之前先替换 NaN 值。

例如,将None设置为零。

list_from_source_code = [None, 2, 3, 4, None, 6, 7]
clean_list_from_source_code = [0 if i is None else i for i in list_from_source_code]

In [4]: pd.DataFrame(clean_list_from_source_code).head(3)                                                                         
Out[4]: 
   0
0  0
1  2
2  3