如何让pandas在python中辨别出None和NaN之间的区别?

时间:2017-09-08 16:39:36

标签: python pandas

我的数据中的某些项目的默认值等于None,并且缺少某些默认值。但似乎熊猫并没有在NoneNaN之间产生太大的差异,因为NaN在某种程度上是合乎逻辑的,因为它们都不是一个数字,但我还是喜欢将Nones存储为Nones,将NaN存储为NaN。有可能吗?

1 个答案:

答案 0 :(得分:2)

如果pandas将列dtype解释为数字,则所有空值Nonenp.nan将变为np.nan。 Pandas在同一列中保留Nonenp.nan的唯一方法是让dtype成为object。但是,重要的是要指出,如果dtypeobject,则会失去使用数字dtype进行有效计算的许多好处。

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

0    1.0
1    NaN
2    NaN
3    2.0
dtype: float64
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)