我的数据中的某些项目的默认值等于None
,并且缺少某些默认值。但似乎熊猫并没有在None
和NaN
之间产生太大的差异,因为NaN在某种程度上是合乎逻辑的,因为它们都不是一个数字,但我还是喜欢将Nones存储为Nones,将NaN存储为NaN。有可能吗?
答案 0 :(得分:2)
如果pandas
将列dtype
解释为数字,则所有空值None
或np.nan
将变为np.nan
。 Pandas在同一列中保留None
和np.nan
的唯一方法是让dtype
成为object
。但是,重要的是要指出,如果dtype
为object
,则会失去使用数字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)