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

时间:2019-05-03 14:40:36

标签: python-3.x pandas dataframe isnull

我正在编写一个函数来自动检查数据帧中每列的空值数量,然后如果空值数量小于或等于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是我的数据帧的名称)后,是否检查是否已使用data.isnull()。sum()删除了包含空行的行,但是该行中存在相同的null计数列

我用drop_na(data,data.columns)调用函数

1 个答案:

答案 0 :(得分:1)

似乎您仅在函数内部删除行。就地执行此操作可以解决此问题,如以下代码所示:

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)即可。如果需要,请不要忘记为新数据框重新编制索引。