我正在编写一个函数来自动检查数据帧中每列的空值数量,然后如果空值数量小于或等于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)调用函数
答案 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)
即可。如果需要,请不要忘记为新数据框重新编制索引。