如何基于条件筛选并保留两个DataFrame中状态为“good”的共同策略记录
一款功能相当强大的录音及音频编辑软件,不仅可以编辑音频,而且还可以录音,功能丰富,操作简单,使用方便,实用性强,并且占用电脑内存小,运行速度快,不卡顿电脑,使电脑系统保持良好的运行状态。支持许多格式的音频文件,包括WAV、OGG、VOC、IFF、AIFF、
利用pandas库的isin方法结合布尔索引,从第一个数据框中筛选出策略号在第二个数据框中状态为“良好”的记录,实现秒级处理。也可使用merge左连接后过滤,时间复杂度为O(n+m),避免低效逐行循环。该方法高效,适用于大数据量。
本文介绍如何高效地从第一个dataframe中筛选出那些在第二个dataframe中对应策略号的状态仍为“good”的记录,避免低效循环,利用pandas向量化操作实现秒级处理。
实际做数据分析时,经常会遇到这么一种场景:手头有一张主表(比如原始策略清单),另一张是更新后的状态快照;现在需要根据快照里的状态,只保留主表中那些“当前仍有效”的记录。具体到本例,df 是原始策略清单,df_2 是最新的状态校验表,目标很清楚:只要 df 里那些 policy number 在 df_2 中对应 policy status == "good" 的行。
这个需求拆开其实就两步——
- 从 df_2 中捞出所有状态为 "good" 的 policy number(也就是当前有效的策略号集合);
- 再从 df 里筛选出 policy number 刚好落在这个集合里的行。
用 Pandas 来做,一行 pd.Series.isin() 配合布尔索引就搞定了,完全不用写循环,底层向量化运算快得飞起:
import pandas as pd
df = pd.DataFrame({
'policy number': [11, 22, 33, 44, 55, 66, 77, 88, 99],
' policy status': ['good', 'good', 'good', 'good', 'good', 'good', 'good', 'good', 'good']
})
df_2 = pd.DataFrame({
'policy number': [11, 83, 63, 44, 55, 66, 67, 88, 99, 100],
'policy status': ['bad', 'bad', 'good', 'good', 'bad', 'good', 'bad', 'good', 'a verage', 'good']
})
# ✅ 高效筛选:仅保留 df 中 policy number 同时存在于 df_2["good"] 策略集合中的行
result = df[df["policy number"].isin(
df_2.loc[df_2["policy status"] == "good", "policy number"]
)]
print(result)
输出结果很干净:
policy number policy status 3 44 good 5 66 good 7 88 good
⚠️ 注意事项:
- 列名必须严格匹配——示例里 df 的列名
' policy status'前面有个空格,而 df_2 是'policy status',一不小心就会匹配失败。建议统一清洗:df.columns = df.columns.str.strip()。- 如果 policy number 有重复,
isin()依然能正确工作,只要至少有一个匹配就视为True。- 如果你还想保留 df_2 中的最新状态字段,可以改用
merge()做左连接后再过滤:merged = df.merge(df_2, on="policy number", how="inner", suffixes=("", "_new")) result = merged[merged["policy status_new"] == "good"].drop(columns=["policy status_new"])
这个方法的时间复杂度是 O(n + m),远优于嵌套循环的 O(n × m)。数据量上了百万级,效果尤其明显——几秒内就能出结果,完全不用干等。
IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。
JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。
JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。
JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,
PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,
PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,













