将DataFrame中的NaN值转换为Python的None:fillna

1、示例

import pandas as pd
import numpy as np

# 创建一个带有NaN值的DataFrame示例
data = {'A': [1, 2, np.nan, 4],
        'B': [np.nan, 2, 3, 4]}
df = pd.DataFrame(data)

# 将NaN值替换为None
df = df.where(pd.notna(df), None)

# 打印结果
print(df)

      A     B
0     1  None
1     2     2
2  None     3
3     4     4

2、原理

在上面的示例中,df.where(pd.notna(df), None) 使用 pd.notna(df) 作为条件,它返回一个布尔 DataFrame,其中元素为 True 表示原始 DataFrame 中的对应元素不是 NaN。然后,df.where 使用 None 作为替换值,将不满足条件(即为 NaN 的元素)替换为 None。

3、df.where

df.where 是 Pandas 中用于根据条件筛选数据的函数。它返回一个与原始 DataFrame 结构相同的新 DataFrame,但只包含满足指定条件的元素,其他元素则被替换为 NaN 或自定义值。

3.1 语法

new_df = df.where(condition, other)

  • condition 是一个布尔条件,它用于筛选数据。只有满足条件的行和列的元素会保留,不满足条件的元素将被替换。
  • other 是一个可选参数,它指定了用于替换不满足条件的元素的值。如果不提供 other,则默认为 NaN。

3、pd.notna(df)

pd.notna(df) 是 Pandas 的一个函数,用于检查 DataFrame 或 Series 中的每个元素是否不是缺失值(NaN)。它返回一个布尔值的 DataFrame 或 Series,其中的每个元素都是 True 或 False,指示相应位置是否包含有效数据(非缺失值)。

具体来说,pd.notna(df) 的作用是将输入的 DataFrame 或 Series 中的每个元素进行逐个检查,如果元素不是缺失值(NaN),则返回 True,否则返回 False。

import pandas as pd
import numpy as np

data = {'A': [1, 2, np.nan, 4],
        'B': [5, np.nan, 7, 8]}

df = pd.DataFrame(data)

# 检查 DataFrame 中的每个元素是否不是缺失值
notna_df = pd.notna(df)
print(notna_df)


       A      B
0   True   True
1   True  False
2  False   True
3   True   True

输出将是一个与原始 DataFrame 结构相同的布尔值 DataFrame,其中 True 表示相应位置不是缺失值,False 表示相应位置是缺失值。


发表评论

评论列表,共 0 条评论

    暂无评论