You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas筛选至少两列值大于0的行且保留原始数据的实现方法

解决方案

你之前代码的问题出在第一行df[df > 0] = 1直接对原数据做了赋值修改,实际上你完全不需要改动原有数据就能完成计算,正确实现方式如下:

# 新增F列存储每行是否符合要求的布尔值
df['F'] = (df > 0).sum(axis=1) >= 2

# 如果需要单独提取符合条件的行,直接用布尔索引筛选即可,不会修改原df数据
result_df = df[df['F']]

实现逻辑说明

  1. df > 0会生成一个和原DataFrame结构完全一致的布尔矩阵,大于0的位置为True,否则为False,整个过程不会修改原数据的任何值
  2. sum(axis=1)对布尔矩阵按行求和(计算时True会被自动识别为1,False识别为0),得到每行中大于0的列的总数量
  3. 将求和结果和>=2做比较,得到的布尔序列直接赋值给新列F,原有所有列的数据都会完整保留

拿你给出的示例数据测试,得到的结果和你期望的输出完全一致。

内容的提问来源于stack exchange,提问作者Isidora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 15:09:03