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

如何筛选DataFrame:排除item为A且price大于1000的行

问题描述

我有如下DataFrame:

import pandas as pd

df = pd.DataFrame(
    {'tid': [11, 12, 12, 14, 14],
     'price': [846.94,412.65,1295.38,741.24,695.47],
     'item': ['A', 'B', 'A', 'B', 'A']}
)

输出的df内容:

tid     price   item
0   11      846.94    A
1   12      412.65    B
2   12     1295.38    A
3   14      741.24    B
4   14      695.47    A

我需要保留所有行,仅排除item列值为A且price列值大于1000的行,预期结果如下:

tid     price   item
0   11      846.94    A
1   12      412.65    B
3   14      741.24    B
4   14      695.47    A
解决方案

可以通过布尔索引实现需求,以下两种方法都能达到目标:

方法1:取反排除条件

先构造需要排除的行的条件,再通过取反操作筛选保留的行:

# 定义要排除的条件:item为A 且 price大于1000
exclude_condition = (df['item'] == 'A') & (df['price'] > 1000)
# 取反筛选,保留不符合排除条件的所有行
result_df = df[~exclude_condition]

方法2:直接定义保留条件

直接写出符合保留要求的逻辑(满足任一条件即可保留):

  • item列值不为A,或者
  • item列值为A但price列值不大于1000

代码实现:

keep_condition = (df['item'] != 'A') | (df['price'] <= 1000)
result_df = df[keep_condition]

两种方法执行后,result_df都会得到你想要的预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:31:03