在pandas DataFrame中,对于空值,请使用None代替np.nan。

16 浏览
0 Comments

在pandas DataFrame中,对于空值,请使用None代替np.nan。

我有一个包含不同数据类型的pandas DataFrame。我想将所有的空值替换为None(而不是默认的np.nan)。但出于某种原因,这似乎几乎不可能。

实际上,我的DataFrame是从csv文件中读取的,但这里有一个包含不同数据类型的简单DataFrame来说明我的问题。

df = pd.DataFrame(index=[0], columns=range(5))
df.iloc[0] = [1, 'two', np.nan, 3, 4]

我不能这样做:

>>> df.fillna(None)
ValueError: must specify a fill method or value

也不能这样做:

>>> df[df.isnull()] = None
TypeError: Cannot do inplace boolean setting on mixed-types with a non np.nan value

还不能这样做:

>>> df.replace(np.nan, None)
TypeError: cannot replace [nan] with method pad on a DataFrame

我以前有一个只包含字符串值的DataFrame,所以我可以这样做:

>>> df[df == ""] = None

这个方法可行。但是现在我有了不同的数据类型,这行不通。

基于我的代码的各种原因,能够使用None作为空值将会很有帮助。有办法可以将空值设置为None吗?还是我只能回到其他代码中,确保我在所有地方都使用np.isnan或pd.isnull?

0