Pandas 替换 NaN 值

作者:问题终结者2024.01.17 19:32浏览量:21

简介:在 Pandas 中,可以使用各种方法来替换 DataFrame 或 Series 中的 NaN 值。下面是一些常见的方法:

在 Pandas 中,可以使用各种方法来替换 DataFrame 或 Series 中的 NaN 值。下面是一些常见的方法:

  1. 使用 fillna() 方法
    fillna() 方法用于填充 NaN 值。可以通过传递一个值或一个方法来替换 NaN。例如,使用平均值、中位数或众数等。
    示例:
    1. import pandas as pd
    2. import numpy as np
    3. df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [5, np.nan, np.nan]})
    4. df.fillna(value=0, inplace=True)
    在这个例子中,我们使用 0 来替换所有的 NaN 值。
  2. 使用 replace() 方法
    replace() 方法用于替换指定的值。可以传递一个值或一个方法来替换 NaN。
    示例:
    1. df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [5, np.nan, np.nan]})
    2. df.replace(np.nan, 0, inplace=True)
    在这个例子中,我们使用 0 来替换所有的 NaN 值。
  3. 使用 where() 方法
    where() 方法可以根据条件来设置值。当条件为真时,设置相应的值;否则,将 NaN 值保留为原始值。
    示例:
    1. df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [5, np.nan, np.nan]})
    2. df.where(df > 0, 0, inplace=True)
    在这个例子中,我们将所有大于 0 的值设置为 0,而保留原始的 NaN 值。
  4. 使用 mask() 方法
    mask() 方法可以根据条件来设置值。当条件为假时,设置相应的值;否则,将 NaN 值保留为原始值。
    示例:
    1. df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [5, np.nan, np.nan]})
    2. df.mask(df <= 0, 0, inplace=True)
    在这个例子中,我们将所有小于等于 0 的值设置为 0,而保留原始的 NaN 值。
  5. 使用 ffill()bfill() 方法(前向和后向填充)
    ffill() 和 bfill() 方法用于根据前一个或后一个有效值来填充 NaN 值。可以使用默认的 None 来指定前向或后向填充方向,或者传递一个方法来自定义填充方式。例如,可以使用 mean、median、mode 等方法进行填充。
    示例:
    1. import pandas as pd
    2. import numpy as np
    3. df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [5, np.nan, np.nan]})
    4. df['A'].ffill(inplace=True)
    5. df['B'].bfill(inplace=True)
    在这个例子中,我们将 A 列的 NaN 值向前填充为前一个有效值,将 B 列的 NaN 值向后填充为后一个有效值。
    以上是一些常见的方法来替换 Pandas 中的 NaN 值。你可以根据自己的需求选择适合的方法。