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

如何用Python(Pandas/循环)基于两个DataFrame匹配生成结果表df_3?

如何用Python(Pandas/循环)基于两个DataFrame匹配生成结果表df_3?

嘿,我来帮你搞定这个问题!首先咱们得先明确下数据结构,虽然你没给出具体的表内容,但我先模拟一组常见的样例数据,方便你对应自己的情况调整~

先假设咱们的样例数据:

import pandas as pd

# 模拟df_1:包含需要匹配的code和其他信息
df_1 = pd.DataFrame({
    "code": ["A001", "B002", "C003"],
    "name": ["Alice", "Bob", "Charlie"]
})

# 模拟df_2:包含code、rank和对应的数据
df_2 = pd.DataFrame({
    "code": ["A001", "A001", "A001", "B002", "B002", "C003"],
    "rank": [3, 1, 2, 2, 1, 1],
    "score": [85, 90, 88, 75, 80, 95]
})

方法一:用Pandas的分组+合并(推荐,效率更高)

核心思路是先把df_2里每个code对应的最低rank记录筛选出来,再和df_1做合并,这样就能得到df_3了:

# 1. 对df_2按code分组,每组取rank最小的行
# 如果有多个相同最低rank的记录,用keep='first'取第一条,也可以根据需求改
df_2_min_rank = df_2.loc[df_2.groupby('code')['rank'].idxmin()]

# 2. 和df_1合并,基于code列匹配
df_3 = pd.merge(df_1, df_2_min_rank, on='code', how='left')

print(df_3)

运行后得到的df_3就是你要的结果:

code     name  rank  score
0  A001    Alice     1     90
1  B002      Bob     1     80
2  C003  Charlie     1     95

方法二:用循环实现(适合理解逻辑,小数据量可用)

如果你更倾向于用循环来逐行处理,也可以这么写:

# 初始化df_3,先复制df_1的结构,再添加需要的列
df_3 = df_1.copy()
df_3['rank'] = None
df_3['score'] = None  # 这里的列名根据你实际需求调整

# 遍历df_1的每一行
for idx, row in df_1.iterrows():
    current_code = row['code']
    # 筛选df_2中当前code的所有记录
    code_matches = df_2[df_2['code'] == current_code]
    # 找到rank最小的那条记录
    min_rank_row = code_matches[code_matches['rank'] == code_matches['rank'].min()]
    # 把数据填充到df_3中
    if not min_rank_row.empty:
        df_3.loc[idx, 'rank'] = min_rank_row['rank'].values[0]
        df_3.loc[idx, 'score'] = min_rank_row['score'].values[0]

print(df_3)

这个方法和上面的结果是一样的,只是用了循环逐行处理,数据量大的话效率会比Pandas的向量操作低一些,所以更推荐第一种方法~

补充说明

如果你的需求是“从最低rank开始对比,找到符合某个条件的记录”(比如rank最低且满足其他条件),只需要在筛选的时候加上对应的条件就行,比如:

# 示例:取每个code中rank最低且score>80的记录
df_2_filtered = df_2[(df_2['rank'] == df_2.groupby('code')['rank'].transform('min')) & (df_2['score'] > 80)]
df_3 = pd.merge(df_1, df_2_filtered, on='code', how='left')

备注:内容来源于stack exchange,提问作者Anticode

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 12:04:39