Pandas2.2 DataFrame
Missing data handling
方法 | 描述 |
---|---|
DataFrame.fillna([value, method, axis, …]) | 用于填充 DataFrame 中的缺失值(NaN) |
pandas.DataFrame.fillna()
pandas.DataFrame.fillna
方法用于填充 DataFrame 中的缺失值(NaN)。以下是该方法的参数说明及其功能:
参数说明
- value: 用于填充缺失值的标量、字典、Series 或 DataFrame。如果为字典,键应为列名,值为对应的填充值。
- method: 填充方法,可选值为
{'backfill', 'bfill', 'pad', 'ffill', None}
。默认为None
。'ffill'
或'pad'
: 使用前向填充(即用前一个非缺失值填充)。'bfill'
或'backfill'
: 使用后向填充(即用后一个非缺失值填充)。
- axis: 指定沿哪个轴填充缺失值。
0
或'index'
表示沿行填充,1
或'columns'
表示沿列填充。默认为0
。 - inplace: 如果为
True
,则直接修改原 DataFrame,不返回新对象;如果为False
,则返回一个新的 DataFrame。默认为False
。 - limit: 指定连续填充的最大数量。默认为
None
,表示不限制。 - downcast: 类型转换选项,通常不常用。默认为
<no_default>
。
示例及结果
示例 1: 使用 value
参数
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': [1, 2, np.nan, 4],
'B': [5, np.nan, np.nan, 8],
'C': [9, 10, 11, 12]
})
print("原始 DataFrame:")
print(df)
filled_df = df.fillna(value=0)
print("\n填充后的 DataFrame (使用 fillna 并指定 value=0):")
print(filled_df)
结果:
原始 DataFrame:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
2 NaN NaN 11
3 4.0 8.0 12
填充后的 DataFrame (使用 fillna 并指定 value=0):
A B C
0 1.0 5.0 9
1 2.0 0.0 10
2 0.0 0.0 11
3 4.0 8.0 12
示例 2: 使用 method
参数
df = pd.DataFrame({
'A': [1, 2, np.nan, 4],
'B': [5, np.nan, np.nan, 8],
'C': [9, 10, 11, 12]
})
print("原始 DataFrame:")
print(df)
filled_df_ffill = df.fillna(method='ffill')
print("\n填充后的 DataFrame (使用 fillna 并指定 method='ffill'):")
print(filled_df_ffill)
filled_df_bfill = df.fillna(method='bfill')
print("\n填充后的 DataFrame (使用 fillna 并指定 method='bfill'):")
print(filled_df_bfill)
结果:
原始 DataFrame:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
2 NaN NaN 11
3 4.0 8.0 12
填充后的 DataFrame (使用 fillna 并指定 method='ffill'):
A B C
0 1.0 5.0 9
1 2.0 5.0 10
2 2.0 5.0 11
3 4.0 8.0 12
填充后的 DataFrame (使用 fillna 并指定 method='bfill'):
A B C
0 1.0 5.0 9
1 2.0 8.0 10
2 4.0 8.0 11
3 4.0 8.0 12
示例 3: 使用 inplace
参数
df = pd.DataFrame({
'A': [1, 2, np.nan, 4],
'B': [5, np.nan, np.nan, 8],
'C': [9, 10, 11, 12]
})
print("原始 DataFrame:")
print(df)
df.fillna(value=0, inplace=True)
print("\n填充后的 DataFrame (使用 fillna 并设置 inplace=True):")
print(df)
结果:
原始 DataFrame:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
2 NaN NaN 11
3 4.0 8.0 12
填充后的 DataFrame (使用 fillna 并设置 inplace=True):
A B C
0 1.0 5.0 9
1 2.0 0.0 10
2 0.0 0.0 11
3 4.0 8.0 12
示例 4: 使用 limit
参数
df = pd.DataFrame({
'A': [1, 2, np.nan, np.nan, 4],
'B': [5, np.nan, np.nan, 8, 9],
'C': [9, 10, 11, 12, 13]
})
print("原始 DataFrame:")
print(df)
filled_df_limit = df.fillna(method='ffill', limit=1)
print("\n填充后的 DataFrame (使用 fillna 并设置 limit=1):")
print(filled_df_limit)
结果:
原始 DataFrame:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
2 NaN NaN 11
3 NaN 8.0 12
4 4.0 9.0 13
填充后的 DataFrame (使用 fillna 并设置 limit=1):
A B C
0 1.0 5.0 9
1 2.0 5.0 10
2 2.0 NaN 11
3 NaN 8.0 12
4 4.0 9.0 13
示例 5: 使用字典作为 value
参数
df = pd.DataFrame({
'A': [1, 2, np.nan, 4],
'B': [5, np.nan, np.nan, 8],
'C': [9, 10, 11, 12]
})
print("原始 DataFrame:")
print(df)
filled_df_dict = df.fillna({'A': 0, 'B': 100})
print("\n填充后的 DataFrame (使用 fillna 并传递字典作为 value 参数):")
print(filled_df_dict)
结果:
始 DataFrame:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
2 NaN NaN 11
3 4.0 8.0 12
填充后的 DataFrame (使用 fillna 并传递字典作为 value 参数):
A B C
0 1.0 5.0 9
1 2.0 100.0 10
2 0.0 100.0 11
3 4.0 8.0 12
这些示例展示了 DataFrame.fillna
方法的不同用法及其效果。根据具体需求,可以选择合适的参数来填充缺失值。