Pandas按first前缀列筛选行后如何保留原DataFrame全部列
解决方案
你之前的写法仅返回first前缀列的核心原因是:先调用filter(like='first')生成了仅包含匹配列的子DataFrame,再基于这个子DataFrame做行筛选,返回结果自然只有子DataFrame的列。
只需要把行筛选的布尔条件单独提取,直接作用在原DataFrame上即可,实现代码如下:
# 生成行筛选布尔掩码:只要任意first前缀列的值大于4,对应行标记为True mask = (temp.filter(like='first') > 4).any(axis=1) # 用掩码索引原DataFrame,保留全部列 result = temp[mask]
补充说明
- 代码中使用
any(axis=1)替代了原写法的sum(axis=1) > 0,二者逻辑完全等价,前者语义更明确,直接表示「行内存在至少一个符合判断条件的值」,可读性更高。 - 生成的
mask是和原DataFrame索引完全对齐的布尔序列,直接索引原DataFrame时只会过滤不符合条件的行,不会修改列的范围,最终输出完全符合你的预期。
内容的提问来源于stack exchange,提问作者The Nightman
相关产品推荐
相关产品推荐

