Pandas DataFrame DataFrame.fillna() 函数
pandas.DataFrame.fillna() 函数将 DataFrame
中的 NaN
值替换为某个值。
pandas.DataFrame.fillna()
语法
DataFrame.fillna(
value=None, method=None, axis=None, inplace=False, limit=None, downcast=None
)
参数
value |
scalar 、dict 、Series 或 DataFrame 。用于替换 NaN 的值 |
method |
backfill 、bfill 、pad 、ffill 或 None 。用于填充 NaN 值的方法 |
axis |
沿行(axis=0 )或列(axis=1 )填补缺失的数值 |
inplace |
布尔型。如果为 True ,就地修改调用者 DataFrame |
limit |
整数。如果指定了 method ,则是要向前/向后填充的连续 NaN 值的最大数量。如果没有指定 method ,则是要填充的轴的最大 NaN 值数 |
downcast |
字典。指定转换的数据类型 |
返回值
如果 inplace
为 True
,则用给定的 value
替换所有 NaN
值的 DataFrame
;否则为 None
。
示例代码:用 DataFrame.fillna()
方法填充所有 DataFrame
中的 NaN
值
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
filled_df = df.fillna(5)
print("Filled DataFrame:")
print(filled_df)
输出:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 3.0 8.0
3 NaN NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.0 4.0
1 2.0 5.0
2 3.0 8.0
3 5.0 5.0
4 3.0 3.0
它用 pandas.DataFrame.fillna()
方法中作为参数提供的 5
填充 DataFrame
中的所有 NaN
值。
DataFrame.fillna()
中的平均数
我们可以用一列的平均值来代替该列的 NaN
值。
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
df.fillna(df.mean(),inplace=True)
print("Filled DataFrame:")
print(df)
输出:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 3.0 8.0
3 NaN NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.00 4.0
1 2.00 5.0
2 3.00 8.0
3 2.25 5.0
4 3.00 3.0
它将 X
列的 NaN
值用 X
列的平均值填充,Y
列的 NaN
值用 Y
列的平均值填充。
由于 inplace=True
,调用 fillna()
函数后,原 DataFrame
被修改。
DataFrame.fillna()
用 0 来填充
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
df.fillna(0,inplace=True)
print("Filled DataFrame:")
print(df)
输出:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 3.0 8.0
3 NaN NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.0 4.0
1 2.0 0.0
2 3.0 8.0
3 0.0 0.0
4 3.0 3.0
它用 0
填充所有 NaN
。
示例代码:DataFrame.fillna()
方法,参数为 method
我们也可以使用不同的 “方法 “参数在 DataFrame
中填充 NaN
值。
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
filled_df = df.fillna(method="backfill")
print("Filled DataFrame:")
print(filled_df)
输出:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 3.0 8.0
3 NaN NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.0 4.0
1 2.0 8.0
2 3.0 8.0
3 3.0 3.0
4 3.0 3.0
设置 method="backfill"
将所有的 DataFrame
中的 NaN
值填充到同一列的 NaN
值之后。
我们也可以使用 bfill
、pad
和 ffill
方法来填充 DataFrame
中的 NaN
值。
method 方法 |
说明 |
---|---|
backfill /bfill |
用同一列中的 NaN 值之后的值填充 DataFrame 中所有的 NaN 值 |
ffill /pad |
用同一列中的 NaN 值之前的值填充 DataFrame 中所有的 NaN 值 |
示例代码:DataFrame.fillna()
方法的 limit
参数
DataFrame.fillna()
方法中的 limit
参数限制了该方法所要填充的连续 NaN
值的最大数量。
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2,np.nan, 3,3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
filled_df = df.fillna(3,limit=1)
print("Filled DataFrame:")
print(filled_df)
输出:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 NaN 8.0
3 3.0 NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.0 4.0
1 2.0 3.0
2 3.0 8.0
3 3.0 NaN
4 3.0 3.0
在这里,一旦一列中的 NaN
值被填满,同一列中的其他 NaN
值将保持原样。
相关文章
DataFrame 获取给定列的第一行
发布时间:2024/04/22 浏览次数:51 分类:Python
-
本教程介绍了如何在 Pandas DataFrame 中使用 Series.loc()和 Series.iloc()方法获取给定列的第一行。
如何基于 Pandas 中的给定条件创建 DataFrame 列
发布时间:2024/04/22 浏览次数:147 分类:Python
-
我们可以使用列表推导技术,numpy 方法,apply()方法和 map()方法对 Pandas 中的给定条件创建 DataFrame 列。
在 Pandas 的 DataFrame 中合并两列文本
发布时间:2024/04/22 浏览次数:99 分类:Python
-
在 Pandas 库中使用 + 运算符,apply(),map(),str.cat(),agg()方法在 DataFrame 中合并列
Pandas DataFrame DataFrame.append() 函数
发布时间:2024/04/22 浏览次数:92 分类:Python
-
Pandas 中的 append 方法将两个不同 DataFrame 的行合并,并返回新的 DataFrame。
Pandas DataFrame DataFrame.apply() 函数
发布时间:2024/04/22 浏览次数:172 分类:Python
-
Pandas DataFrame apply()函数将输入的函数应用到 Pandas DataFrame 的每一个沿行或沿列的元素。
Pandas DataFrame DataFrame.aggregate() 函数
发布时间:2024/04/22 浏览次数:98 分类:Python
-
Pandas DataFrame aggregate()函数对 DataFrame 的列或行进行聚合。