如何在 Pandas DataFrame 的列中将所有 NaN 值替换为零?

关注者
8
被浏览
111,700

5 个回答

df.fillna():空值填充

创建一个DataFrame:

import pandas as pd
import numpy as np
Student_dict = {'姓名':['张三', '李四', '王五', '赵六'],
                '性别':['男', '女', '男', '女'],
                '年龄':[20, 21, 19, 18],
                'Python成绩':[70, np.nan, 90, 50]}
# 字典创建DataFrame,字典键变DataFrame的列名
df = pd.DataFrame(data=Student_dict, index=['a','b','c','d'])
df

df.fillna():填充空值为-999:

df.fillna(-999, inplace=True)
df

变更前后:

更多DataFrame操作可以看一下我的文章哦:

如果觉得不错,大家记得动动小手帮我 @ColorfulRain0807 点个赞呀,这对我很重要!

我们处理大型数据集时,有时数据集中会有 NaN 值要用某个平均值或合适的值替换。例如,你有一个学生评分列表,有些学生没有参加测验,因此系统自动输入了 NaN 而不是 0.0。因此我们要对这些NaN值进行处理,一种简单的方式就是将NaN值替换为零。下面我们介绍两种替换的方法。

1.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)

python基础知识资料分享给大家~~~ 获取方式:

【资料免费领】| 程序员必备指南+Python学习资料,0元抱走!

2.df.replace() 方法

此方法与 df.fillna() 相同,将 NaN 替换为 0 df.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)