Pandas 的DataFrame.fillna(~)
方法用指定值或填充規則填充NaN
(缺失值)。
參數
1.value
| scalar
或 dict
或 Series
或 DataFrame
| optional
要替換 NaN
的值。如果指定了 dict
或 Series
,則鍵/索引是列標簽,值是填充符。
2. method
| None
或 string
| optional
填充 NaN
的規則:
值 |
說明 |
---|---|
|
使用下一個非 |
|
使用之前的非 |
|
不執行任何填充。 |
默認情況下,method=None
。
警告
僅指定 value
或 method
- 不能同時指定兩者。
3. axis
| int
或 string
| optional
是否填充每列或每行:
軸 |
說明 |
---|---|
|
按列填充 |
|
按行填充 |
默認情況下,axis=0
。請注意,僅當您指定 method
而不是 value
時,這才相關。
4. inplace
| boolean
| optional
-
如果是
True
,那麽該方法將直接修改源DataFrame,而不是創建新的DataFrame。 -
如果是
False
,則將創建並返回一個新的DataFrame。
默認情況下,inplace=False
。
5. limit
| None
或 int
| optional
-
如果指定
method
,則limit
是要填充的連續NaN
的最大數量。如果連續NaN
的數量超過limit
,則不進行填充。 -
如果未指定
method
,則limit
是每行或每列執行的最大填充數。
默認情況下,limit=None
。
返回值
DataFrame
,其中 NaN
被填充符替換。
例子
考慮以下 DataFrame :
df = pd.DataFrame({"A":[None,5,6],"B":[7,None,8],"C":[9,None,None]})
df
A B C
0 NaN 7.0 9.0
1 5.0 NaN NaN
2 6.0 8.0 NaN
填充一個值
要使用值 10
填充 NaN
:
df.fillna(10)
A B C
0 10.0 7.0 9.0
1 5.0 10.0 10.0
2 6.0 8.0 10.0
僅填充某些列
要指定要填充的列,請提供 dict
或 Series
,如下所示:
df.fillna({"A":"*","C":10})
A B C
0 * 7.0 9.0
1 5 NaN 10.0
2 6 8.0 10.0
請注意,B
列在此處仍然具有 NaN
,因為提供的 dict
沒有 B
鍵。
指定填充方法
考慮與之前相同的df
:
df
A B C
0 NaN 7.0 9.0
1 5.0 NaN NaN
2 6.0 8.0 NaN
向後填充
要按列填充 NaN
,使用下一個非 NaN
值:
df.fillna(method="bfill") # or method="backfill"
A B C
0 5.0 7.0 9.0
1 5.0 8.0 NaN
2 6.0 8.0 NaN
請注意我們還剩下一些NaN
。這是因為 NaN
之後沒有任何值,因此我們沒有填充值。
前向填充
要使用之前的非 NaN
值按列填充 NaN
:
df.fillna(method="ffill") # or method="pad"
A B C
0 NaN 7.0 9.0
1 5.0 7.0 9.0
2 6.0 8.0 9.0
同樣,我們在 A[0]
處有一個 NaN
,因為 NaN
之前沒有任何值,因此我們沒有填充值。
指定軸
僅供參考,這裏是相同的 df
:
df
A B C
0 NaN 7.0 9.0
1 5.0 NaN NaN
2 6.0 8.0 NaN
默認情況下, axis=0
,這意味著填充方法按列應用:
df.fillna(method="ffill") # axis=0
A B C
0 NaN 7.0 9.0
1 5.0 7.0 9.0
2 6.0 8.0 9.0
我們可以通過設置 axis=1
來執行逐行填充:
df.fillna(method="ffill", axis=1)
A B C
0 NaN 7.0 9.0
1 5.0 5.0 5.0
2 6.0 8.0 8.0
請注意,僅當您指定 method
參數而不是 value
時,axis
參數才相關。
指定限製
當指定參數方法時
如果method
被指定,那麽limit
是最大數量連續的 NaN
填寫。
僅供參考,這裏是相同的 df
:
df
A B C
0 NaN 7.0 9.0
1 5.0 NaN NaN
2 6.0 8.0 NaN
要將連續 NaN
的數量限製為 1
:
df.fillna(method="ffill", limit=1)
A B C
0 NaN 7.0 9.0
1 5.0 7.0 9.0
2 6.0 8.0 NaN
請注意單元格 C[2]
仍然具有 NaN
值。這是因為我們這裏有 2 個連續的 NaN
,並且由於我們指定了 limit=1
,所以隻有第一個被填充。
未指定參數方法時
當未指定 method
時,limit
表示每行或每列執行的最大填充數。例如,考慮以下 DataFrame:
df = pd.DataFrame({"A":[None,5,None],"B":[7,None,8],"C":[9,None,None]})
df
A B C
0 NaN 7.0 9.0
1 5.0 NaN NaN
2 NaN 8.0 NaN
使用 limit=1
執行填充會產生:
df.fillna(2, limit=1)
A B C
0 2.0 7.0 9.0
1 5.0 2.0 2.0
2 NaN 8.0 NaN
請注意 A
和 C
列中仍然包含 NaN
。
相關用法
- Python PySpark DataFrame fillna方法用法及代碼示例
- Python PySpark DataFrame filter方法用法及代碼示例
- Python Pandas DataFrame filter方法用法及代碼示例
- Python Pandas DataFrame first_valid_index方法用法及代碼示例
- Python Pandas DataFrame first方法用法及代碼示例
- Python Pandas DataFrame floordiv方法用法及代碼示例
- Python PySpark DataFrame foreach方法用法及代碼示例
- Python Pandas DataFrame empty屬性用法及代碼示例
- Python Pandas DataFrame pop方法用法及代碼示例
- Python Pandas DataFrame nsmallest方法用法及代碼示例
- Python Pandas DataFrame sample方法用法及代碼示例
- Python Pandas DataFrame items方法用法及代碼示例
- Python Pandas DataFrame max方法用法及代碼示例
- Python Pandas DataFrame swaplevel方法用法及代碼示例
- Python Pandas DataFrame agg方法用法及代碼示例
- Python Pandas DataFrame copy方法用法及代碼示例
- Python Pandas DataFrame pow方法用法及代碼示例
- Python Pandas DataFrame insert方法用法及代碼示例
- Python Pandas DataFrame lt方法用法及代碼示例
- Python Pandas DataFrame all方法用法及代碼示例
- Python Pandas DataFrame unstack方法用法及代碼示例
- Python Pandas DataFrame mean方法用法及代碼示例
- Python Pandas DataFrame tz_convert方法用法及代碼示例
- Python Pandas DataFrame isin方法用法及代碼示例
- Python PySpark DataFrame collect方法用法及代碼示例
注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | fillna method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。