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