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

如何基于多个DataFrame的多筛选条件返回筛选后的合并数据集?

嘿,这需求很清晰,我来一步步帮你实现!我们可以通过Pandas的筛选+合并操作轻松完成这个任务,具体步骤如下:

实现步骤

1. 先确保导入Pandas库

首先得把Pandas导进来,这是处理DataFrame的核心工具:

import pandas as pd

2. 定义你的原始DataFrame(如果还没定义的话)

先把你给出的三个DataFrame写出来,方便后续测试和操作:

# df1
df1 = pd.DataFrame({
    'Ticker': ['ABC', 'DEF', 'GHI'],
    'Company Name': ['ABC Co.', 'DEF Co.', 'GHI Co.'],
    'COMBOACCRUAL': [0.9, 0.99, 0.5]
})

# df2
df2 = pd.DataFrame({
    'Ticker': ['ABC', 'DEF', 'GHI'],
    'Company Name': ['ABC Co.', 'DEF Co.', 'GHI Co.'],
    'PMAN': [0.7, 0.3, 0.55]
})

# df3
df3 = pd.DataFrame({
    'Ticker': ['ABC', 'DEF', 'GHI'],
    'Company Name': ['ABC Co.', 'DEF Co.', 'GHI Co.'],
    'PFD': [0.25, 0.35, 0.9]
})

3. 对每个DataFrame应用筛选条件

按照要求分别过滤每个数据集:

# 筛选df1:只保留COMBOACCRUAL小于0.95的记录
filtered_df1 = df1[df1['COMBOACCRUAL'] < 0.95]
# 这里DEF的COMBOACCRUAL是0.99,不满足条件会被排除

# 筛选df2:只保留PMAN小于0.95的记录
filtered_df2 = df2[df2['PMAN'] < 0.95]
# 所有记录都满足这个条件

# 筛选df3:只保留PFD小于0.95的记录
filtered_df3 = df3[df3['PFD'] < 0.95]
# 所有记录都满足这个条件

4. 合并筛选后的数据集

我们基于Ticker和Company Name这两个唯一标识,用**内连接(inner join)**来合并三个筛选后的DataFrame,这样只会保留在所有筛选后数据集中都存在的公司记录:

# 链式合并,一步到位
df4 = filtered_df1.merge(filtered_df2, on=['Ticker', 'Company Name']) \
                  .merge(filtered_df3, on=['Ticker', 'Company Name'])

5. 查看最终结果

运行后打印df4,就会得到你预期的结果:

print(df4)

输出:

Ticker Company Name  COMBOACCRUAL  PMAN  PFD
0    ABC      ABC Co.           0.9  0.70  0.25
1    GHI      GHI Co.           0.5  0.55  0.90

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 12:59:05