如何筛选DataFrame中至少2列数值大于等于1的行
解决方法
完整代码
核心逻辑是逐行统计满足数值≥1的列数,筛选出列数≥2的行即可,完整实现代码如下:
import pandas as pd import numpy as np # 构造示例DataFrame,实际使用时可替换为你自己读取的数据源 df = pd.DataFrame({ 'col1': [np.nan, 2.45, 1.68, np.nan], 'col2': [0.29, 0.8, 9.7, np.nan], 'col3': [-0.03, np.nan, 1.18, -9], 'col4': [1.45, 0.11, -145, -0.9], 'col5': [45.67, np.nan, np.nan, 4.8] }, index=[1,2,3,4]) # 核心筛选逻辑 filtered_df = df[df.ge(1).sum(axis=1) >= 2] # 打印验证结果 print(filtered_df)
逻辑说明
df.ge(1)是pandas的元素级大于等于判断方法,会对DataFrame每个值做是否≥1的校验,返回同结构的布尔值DataFrame,空值NaN会自动判定为Falsesum(axis=1)按行对布尔值求和,True按1计算、False按0计算,得到的结果就是每行符合≥1要求的列数量- 最后过滤出求和结果≥2的行,输出结果和你给出的预期完全一致
内容的提问来源于stack exchange,提问作者altermann
相关产品推荐
相关产品推荐

