编写了一个函数来量化数据框每一列中的空值,但不丢弃

Wrote a function to quantify nulls in each column of data frame, but doesn't drop

我正在编写一个函数来自动检查数据框中每列的空值数量,然后如果空值数量小于或等于 2000,则删除包含空值的行

我写了一些代码,成功输出文本字符串以标记它分析了哪一列

def drop_na(df,cols):
    for i in cols:

        missing_vals = df[i].isnull().sum()


        if missing_vals <= 2000:
            df = df.dropna(subset=[i])
        print(f'finished checking column  "{i}"')
    print('FINISHED ALL!')

我正在检查是否在 运行 代码成功后使用 data.isnull().sum() 删除了包含空值的行(其中数据是我的数据框的名称)但列中存在相同的空计数

我用 drop_na(data, data.columns)

调用函数

看起来您只是在函数内部删除行。就地执行此操作可解决问题,如下代码所示:

def drop_na(data):
    cols = data.cols
    subset = []
    # Determine bad columns, and store them in `subset` list.
    for i in cols:
        missing_vals = df[i].isnull().sum()
        if missing_vals <= 2000:
            subset.append(i)
    # Now remove all bad columns at once, but inplace.
    df.dropna(subset=subset, inplace=True)
    print('FINISHED ALL!')

如果您不想就地执行此操作,则返回 df 并将返回值分配给新变量 df2 = drop_na(data) 即可。如果需要,请不要忘记重新索引新数据框。