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

如何基于多条件筛选DataFrame,移除指定行并保留其余数据

多条件筛选DataFrame行的解决方案

核心思路

你需要保留不满足「media等于IO+Glc+CasA+Fe_gfp 且 id为1或2」的所有行,用布尔索引或query()方法都能快速实现。


方法1:布尔索引直接筛选

用~对移除条件取反,排除目标行:

import pandas as pd

# 先构造你的示例DataFrame(如果已有df可跳过此步)
data = {
    'time': [0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.72, 0.72, 0.72, 0.72, 0.72, 0.72],
    'media': ['IO+Glc+CasA_gfp', 'IO+Glc+CasA_gfp', 'IO+Glc+CasA_gfp', 'IO+Glc+CasA+Fe_gfp', 'IO+Glc+CasA+Fe_gfp', 'IO+Glc+CasA+Fe_gfp', 'IO+Glc+CasA_gfp', 'IO+Glc+CasA_gfp', 'IO+Glc+CasA_gfp', 'IO+Glc+CasA+Fe_gfp', 'IO+Glc+CasA+Fe_gfp', 'IO+Glc+CasA+Fe_gfp'],
    'id': [1,2,3,1,2,3,1,2,3,1,2,3],
    'od': [0.00, -0.07, 0.02, 0.01, 0.01, 0.02, -0.02, -0.01, 0.01, 0.14, 0.11, 0.02],
    'gfp': [81, -19, -95, 123, -17, -40, 128, -20, -77, 15, -12, 15]
}
df = pd.DataFrame(data, index=[37,38,39,43,44,45,85,86,87,91,92,93])

# 筛选逻辑:保留 不是(media为目标值且id在1、2中) 的行
filtered_df = df[~((df['media'] == 'IO+Glc+CasA+Fe_gfp') & (df['id'].isin([1,2])))]

方法2:query()简洁语法

用类SQL的语法实现,代码更直观:

filtered_df = df.query("not (media == 'IO+Glc+CasA+Fe_gfp' and id in [1,2])")

验证结果

打印filtered_df即可确认结果:

print(filtered_df)

输出符合预期:

time              media  id    od  gfp
37    0.24    IO+Glc+CasA_gfp   1  0.00   81
38    0.24    IO+Glc+CasA_gfp   2 -0.07  -19
39    0.24    IO+Glc+CasA_gfp   3  0.02  -95
45    0.24 IO+Glc+CasA+Fe_gfp   3  0.02  -40
85    0.72    IO+Glc+CasA_gfp   1 -0.02  128
86    0.72    IO+Glc+CasA_gfp   2 -0.01  -20
87    0.72    IO+Glc+CasA_gfp   3  0.01  -77
93    0.72 IO+Glc+CasA+Fe_gfp   3  0.02   15

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:15:38