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

如何过滤DataFrame中不在多个DataFrame列表中的行?

改写方案

核心思路

把所有需要排除的path列合并成一个统一序列,再一次性判断索引是否在该序列中,就能用列表批量处理任意数量的DataFrame,彻底摆脱硬编码。

具体代码

  1. 定义包含目标DataFrame的列表(可按需添加更多):
dfs_to_exclude = [df2, df3]
  1. 合并所有列表中DataFrame的path列:
import pandas as pd
all_excluded_paths = pd.concat([df['path'] for df in dfs_to_exclude], ignore_index=True)
  1. 过滤原DataFrame:
df = df[~df.index.isin(all_excluded_paths)]

简化写法(一步到位)

如果不需要保留中间变量,可以直接合并成一行:

dfs_to_exclude = [df2, df3]
df = df[~df.index.isin(pd.concat([d['path'] for d in dfs_to_exclude], ignore_index=True))]

说明

这种写法和原代码逻辑完全一致:排除所有索引出现在任意一个目标DataFrame的path列中的行。后续要添加更多需要排除的DataFrame,只需往dfs_to_exclude列表里追加即可,无需修改过滤逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:28:15