Python中如何忽略pandas选取不存在列时的“not in index”错误
问题解决方法
你只需要在计算求和的环节单独筛选col_list中实际存在的列即可,不要直接用交集结果替换整个DataFrame的列,就可以保留原有的X、Y、Z列,实现代码如下:
# 仅提取col_list里在df中真实存在的列,该操作不会修改原df的列结构 valid_cols = [col for col in col_list if col in df.columns] # 仅对存在的列求和来过滤行,原df的所有列都会完整保留 df = df[df[valid_cols].sum(axis=1) == 0]
你也可以用pandas内置的索引交集方法简化写法,效果完全一致:
valid_cols = df.columns.intersection(col_list) df = df[df[valid_cols].sum(axis=1) == 0]
效果验证
以你给出的示例参数为例:
- 定义的
col_list = ["A","B","C","D","E"] - df实际包含列
["A","B","X","Y","Z"]
执行以上代码后,valid_cols会自动得到["A","B"],仅对这两列求和后筛选符合条件的行,原有的X、Y、Z列会全部保留,不会被删除,也不会因为C、D、E列不存在报错。
内容的提问来源于stack exchange,提问作者DarshanC
相关产品推荐
相关产品推荐

