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

n个DataFrame基于指定列的行交集筛选合并需求问询

嘿,这个需求我熟!咱们要做的就是基于指定列(Column C)取多个DataFrame的行交集——也就是只保留那些Column C的值在所有输入DF里都存在的行,像19.0、26.0、27.50这种只在部分DF里出现的值对应的行,直接过滤掉。我给你整理了清晰的实现思路和可复现代码,一看就懂!

实现步骤与代码

1. 先准备示例数据

假设我们有3个DataFrame,先创建模拟数据方便测试:

import pandas as pd

# 创建3个示例DataFrame
df1 = pd.DataFrame({
    'Column A': ['a1', 'a2', 'a3', 'a4'],
    'Column B': ['b1', 'b2', 'b3', 'b4'],
    'Column C': [10.0, 19.0, 25.0, 27.5]
})

df2 = pd.DataFrame({
    'Column A': ['a5', 'a6', 'a7', 'a8'],
    'Column B': ['b5', 'b6', 'b7', 'b8'],
    'Column C': [10.0, 25.0, 26.0, 30.0]
})

df3 = pd.DataFrame({
    'Column A': ['a9', 'a10', 'a11', 'a12'],
    'Column B': ['b9', 'b10', 'b11', 'b12'],
    'Column C': [10.0, 25.0, 30.0, 35.0]
})

2. 找出所有DF中Column C的共同值

核心是先拿到在所有DataFrame的Column C里都出现的值集合,这样后续才能用这个集合去筛选行:

# 通用写法,不管n是多少都能用
dfs = [df1, df2, df3]
# 先取第一个DF的Column C值作为初始集合
common_c_values = set(dfs[0]['Column C'])
# 依次和剩下的DF的Column C取交集
for df in dfs[1:]:
    common_c_values.intersection_update(df['Column C'])

运行后common_c_values会是{10.0, 25.0}——这就是所有DF共有的Column C值。

3. 筛选并合并得到最终DataFrame

接下来用这个共同值集合,筛选每个DF中符合条件的行,最后合并成一个新的DF:

# 筛选每个DF中Column C在共同值里的行,然后合并
final_df = pd.concat([df[df['Column C'].isin(common_c_values)] for df in dfs], ignore_index=True)

这样得到的final_df里,就只有Column C为10.0和25.0的行,完全符合你的需求!

可选:按Column C对齐合并列

如果你需要的不是合并行,而是把各个DF中相同Column C值的列对齐合并(比如把相同C值的不同列数据放在一行),可以用内连接的方式:

# 按Column C做三次内连接,得到对齐后的结果
final_merged_df = df1.merge(df2, on='Column C', how='inner').merge(df3, on='Column C', how='inner')

这个结果会把三个DF的列按Column C合并,列名会自动加上后缀区分不同DF的列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:46:12