更改熊猫默认填充设置



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

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

编辑:

我尝试pd.set_option('mode.use_inf_as_na', True)无济于事

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

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

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

最新更新