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