我想更改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