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

多DataFrame按abmn列筛选交集数据的解决方案求助

多DataFrame筛选共有abmn值的解决方案

核心思路

既然已经拿到四个数据集共有的abmn值列表,直接用该列表对每个DataFrame做行筛选即可,无需顾虑各数据集长度差异。

具体实现(Python Pandas)

假设你已获取共有abmn值列表common_abmn,以及四个目标DataFrame:df1、df2、df3、df4。

方法1:逐个筛选

直接对每个DataFrame使用isin()方法过滤行:

# 基于已有共有列表筛选
filtered_df1 = df1[df1['abmn'].isin(common_abmn)]
filtered_df2 = df2[df2['abmn'].isin(common_abmn)]
filtered_df3 = df3[df3['abmn'].isin(common_abmn)]
filtered_df4 = df4[df4['abmn'].isin(common_abmn)]

方法2:批量处理(高效版)

如果DataFrame数量较多,可将它们存入列表批量操作:

# 把所有目标DataFrame放入列表
dfs = [df1, df2, df3, df4]
# 批量执行筛选逻辑
filtered_dfs = [df[df['abmn'].isin(common_abmn)] for df in dfs]
# 按需将结果重新赋值给原变量
filtered_df1, filtered_df2, filtered_df3, filtered_df4 = filtered_dfs

示例验证

用你提供的测试数据验证效果:

import pandas as pd

# 构造示例数据
df1 = pd.DataFrame({'res': [3, 0, 2], 'abmn': ['1234', '1245', '1256']})
df2 = pd.DataFrame({'res': [1, 0, 2], 'abmn': ['1234', '1256', '1267']})
# 若还未获取共有abmn列表,可通过集合交集计算
common_abmn = list(set(df1['abmn']).intersection(df2['abmn']))
# 执行筛选
filtered_df1 = df1[df1['abmn'].isin(common_abmn)]
filtered_df2 = df2[df2['abmn'].isin(common_abmn)]

运行后得到的filtered_df1和filtered_df2与你期望的结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:25:21