Python Pandas如何排除id、col1列删除col2-col6全False行?
解决方法:删除指定列全为False的行
核心思路
只针对col2到col6这几列做判断——只要这些列里有至少一个True,就保留该行,完全不考虑id和col1的值。
正确代码实现
有两种常用写法,根据你的列结构灵活选择:
写法1:直接指定目标列名(列不连续也适用)
import pandas as pd # 假设你的数据集存储在df中 target_cols = ['col2', 'col3', 'col4', 'col5', 'col6'] # 生成过滤掩码:判断每行的目标列是否不全为False mask = df[target_cols].any(axis=1) # 过滤得到结果 filtered_df = df[mask]
写法2:按列位置切片(列连续时更便捷)
如果你的列顺序是id、col1、col2、col3、col4、col5、col6(即col2到col6对应索引0开始的第2到第6列),可以用位置切片:
# iloc[:, 2:7]表示选中所有行、第2到第6列(切片左闭右开,所以写2:7) mask = df.iloc[:, 2:7].any(axis=1) filtered_df = df[mask]
报错原因分析
你遇到的list indices must be integers or slices, not str错误,大概率是列选择的语法出错:
- 比如错误写了
df[['col2':'col6']]——列表里不能用字符串切片,连续列切片应该用df.loc[:, 'col2':'col6'] - 或者误将列名当作列表的整数索引使用,导致用字符串索引列表触发报错
内容的提问来源于stack exchange,提问作者Ven
相关产品推荐
相关产品推荐

