如何在pandas中筛选指定6列均不为0的行
pandas筛选指定列全不为0的行实现方法
首先先定义你需要校验的6个目标列列表,将下方示例中的列名替换为你实际使用的列名即可:
# 替换为你实际的6个目标列名 target_cols = ['列1', '列2', '列3', '列4', '列5', '列6'] # 筛选出6个目标列均不为0的行,生成新的DataFrame df_filtered = df[(df[target_cols] != 0).all(axis=1)]
代码说明
df[target_cols] != 0会对6个目标列的所有单元格做不等于0的判断,返回布尔类型的DataFrameall(axis=1)表示对每一行的所有布尔值做与运算,只有该行所有值都为True(即所有列都不为0)时,最终结果才为True- 用生成的布尔序列做索引,即可过滤掉不符合要求的行
如果需要直接在原DataFrame上删除不符合要求的行,可以用如下写法:
target_cols = ['列1', '列2', '列3', '列4', '列5', '列6'] df.drop(df[(df[target_cols] == 0).any(axis=1)].index, inplace=True)
注意事项
如果你的数据中0是以字符串'0'的形式存储的,将判断条件中的0替换为'0'即可。
内容的提问来源于stack exchange,提问作者user963241
相关产品推荐
相关产品推荐

