我有一个混合数据类型的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
nor>>> 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?
df[df.isnull()] = None
- 对我来说运行良好(pandas 0.18.1) - MaxU - stand with Ukraine