如何让熊猫辨别python中None和NaN的区别?

如何让熊猫辨别python中None和NaN的区别?,python,pandas,Python,Pandas,“我的数据”中的某些项的默认值等于None,而某些默认值只是缺少。但是,熊猫似乎没有太大的区别,它们之间的区别,它们都是NaN,这是有点逻辑的,因为它们都不是数字,但我还是想把Nones存储为Nones,Nass也像Nass一样。有可能吗?如果pandas将列的dtype解释为数字,则所有空None或np.nan将变为np.nan。熊猫在同一列中保留None和np.nan的唯一方法是将dtypebeobject。但是,需要指出的是,如果dtype是object,则会失去使用数值dtype的许多好

“我的数据”中的某些项的默认值等于
None
,而某些默认值只是缺少。但是,熊猫似乎没有太大的区别,它们之间的区别,它们都是NaN,这是有点逻辑的,因为它们都不是数字,但我还是想把Nones存储为Nones,Nass也像Nass一样。有可能吗?

如果
pandas
将列的
dtype
解释为数字,则所有空
None
np.nan
将变为
np.nan
。熊猫在同一列中保留
None
np.nan
的唯一方法是将
dtype
be
object
。但是,需要指出的是,如果
dtype
object
,则会失去使用数值
dtype
的许多好处,比如高效计算

pd.Series([1, None, np.nan, 2])

0    1.0
1    NaN
2    NaN
3    2.0
dtype: float64



啊,我明白了!看来这正是我需要的。非常感谢。请你至少提一下其中的一些好处好吗?我能做分组、过滤等吗?我看不出我的目的有什么好处。我可以想象有人想要将
None
np.nan
分开保存的边缘用例。或者出于报告的目的,他们希望他们的表格看起来像某种方式。否则,我不熟悉使用
dtype
对象的任何实质性好处。当我想要一个系列来跟踪我的自定义对象时,我就使用了它,但这并不正常。是的,你可以进行过滤和分组。但是没有比这更有效的了。啊,好吧,那么区别主要在于效率,对吗?嗯,我之所以要把它们分开,是因为我的数据框是由函数名、它们的参数、参数的默认值等组成的,所以列的“default_值”“有时必须存储
None
,表示相应参数的默认值设置为
None
,有时
Nan
,表示缺少默认值。那么,在不分离
Nans
Nones
的情况下,我如何做到这一点?
pd.Series([1, None, np.nan, 2], dtype=object)

0       1
1    None
2     NaN
3       2
dtype: object
s1 = pd.Series([1, None, np.nan, 2])
s2 = pd.Series([1, None, np.nan, 2], dtype=object)

%timeit s1 + 1
%timeit s2 + 1

68 µs ± 3.39 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
169 µs ± 5.18 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)