如何在 Pandas DataFrame 的列中將所有 NaN 值替換為零

  1. df.fillna() 方法將所有 NaN 值替換為零
  2. df.replace() 方法

當我們處理大型資料集時,有時資料集中會有 NaN 值要用某個平均值或合適的值替換。例如,你有一個學生評分列表,有些學生沒有參加測驗,因此係統自動輸入了 NaN 而不是 0.0。下面列出了完成此任務的不同方法。

  1. df.fillna()
  2. df.replace()

在以下各節中,我們將使用相同的 DataFrame,如下所示:

import pandas as pd
import numpy as np
data = {'name': ['Oliver', 'Harry', 'George', 'Noah'],
        'percentage': [90, 99, 50, 65],
        'grade': [88, np.nan, 95,np.nan]}
df = pd.DataFrame(data)
print(df)

以下是等級為 NaNDataFrame

     name  percentage  grade
0  Oliver          90   88.0
1   Harry          99    NaN
2  George          50   95.0
3    Noah          65    NaN

df.fillna() 方法將所有 NaN 值替換為零

讓我們藉助 df.fillna() 方法替換 NaN 值。

import pandas as pd
import numpy as np
data = {'name': ['Oliver', 'Harry', 'George', 'Noah'],
        'percentage': [90, 99, 50, 65],
        'grade': [88, np.nan, 95,np.nan]}
df = pd.DataFrame(data)
df = df.fillna(0)
print(df)

以下是將 NaN 替換為 0 的輸出。

     name  percentage  grade
0  Oliver          90   88.0
1   Harry          99    0.0
2  George          50   95.0
3    Noah          65    0.0

df.fillna() 方法用給定值填充 NaN 值。它不會更改物件資料,但預設情況下會返回一個新的 DataFrame,除非將 inplace 引數設定為 True。

我們可以通過設定 inplace 引數為 True 來重寫上述程式碼。

import pandas as pd
import numpy as np
data = {'name': ['Oliver', 'Harry', 'George', 'Noah'],
        'percentage': [90, 99, 50, 65],
        'grade': [88, np.nan, 95,np.nan]}
df = pd.DataFrame(data)
df.fillna(0, inplace=True)
print(df)

df.replace() 方法

此方法與 df.fillna() 相同,將 NaN 替換為 0df.replace() 也可用於替換其他數字。讓我們看一下程式碼。

    import pandas as pd
    import numpy as np
    data = {'name': ['Oliver', 'Harry', 'George', 'Noah'],
            'percentage': [90, 99, 50, 65],
            'grade': [88, np.nan, 95,np.nan]}
    df = pd.DataFrame(data)
    nan_replaced = df.replace(np.nan,0)
    print(nan_replaced)

以下是輸出。

     name  percentage  grade
0  Oliver          90   88.0
1   Harry          99    0.0
2  George          50   95.0
3    Noah          65    0.0

相關文章 - Pandas NaN

  • Pandas 刪除帶有 NaN 的行