如何用Pandas Python筛选LIMIT等于LIMIT1的Dataframe行
筛选
LIMIT等于LIMIT1的行的几种方法 当然可以实现你要的筛选效果!下面是几种在pandas里实现该需求的常用方法,每种方法都能精准得到你期望的结果:
方法一:布尔索引(最常用直观)
这是pandas里最基础的行筛选方式,直接通过列的比较生成布尔掩码来过滤数据:
filtered_df = df[df['LIMIT'] == df['LIMIT1']]
执行后,filtered_df就会只保留LIMIT和LIMIT1值完全相等的行,和你给出的目标结果完全匹配。
方法二:使用query()方法(语法更简洁)
如果你偏好接近SQL的查询风格,query()方法会让代码可读性更高,写起来也更顺手:
filtered_df = df.query('LIMIT == LIMIT1')
这个方法和布尔索引的效果完全一致,后续如果需要添加复杂筛选条件,用它会更方便。
方法三:使用loc方法(灵活控制列选择)
loc方法可以同时指定行筛选条件和列范围,如果你之后需要调整要保留的列,这个方法的灵活性会更强:
# 保留所有列 filtered_df = df.loc[df['LIMIT'] == df['LIMIT1'], :] # 或者明确指定需要的列(和原需求列对应) filtered_df = df.loc[df['LIMIT'] == df['LIMIT1'], ['MNR', 'Price', 'LIMIT', 'LIMIT1']]
最终结果验证
执行上述任意方法后,得到的filtered_df都会是:
| MNR | Price | LIMIT | LIMIT1 | |
|---|---|---|---|---|
| 0 | 03M7401 | 49.76 | 0 | 1 |
| 2 | LCA94237B | 55.68 | 1 | 1 |
| 4 | LCA95038B-1 | 2.33 | 100 | 100 |
内容的提问来源于stack exchange,提问作者Nicolas Mellein
相关产品推荐
相关产品推荐

