python - 对 pandas DataFrame 中的空值使用 None 而不是 np.nan

标签 python pandas dataframe

我有一个包含混合数据类型的 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 作为我的 null 值会很有帮助。有没有办法可以将空值设置为无?或者我是否只需要返回我的其他代码并确保我在所有地方都使用 np.isnan 或 pd.isnull?

最佳答案

Use pd.DataFrame.where
当条件满足时使用 df 值,否则使用 None

df.where(df.notnull(), None)

enter image description here

关于python - 对 pandas DataFrame 中的空值使用 None 而不是 np.nan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39279824/

相关文章:

python - 如何连接 2 个数据框并基于过滤器 pyspark 添加新列

python - Pandas:使用日期列表和 DateTimeIndex 访问数据

python - 递归动画 matplotlib

python - 使用 python 网格搜索的高斯过程回归超参数优化

python - 从列表中过滤记录

python - Pandas - 修改每个单元格中的字符串值

python - pandas 使用 if/truth 语句将函数应用于数据框的列

python - 帮助屏幕中忽略了 argparse 的 "required"?

python - 如何获得 Pandas 系列的元素逻辑非?

pandas - 设置 pandas 索引单元格的背景颜色