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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
