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

基于Header Request匹配,如何追加两个DataFrame生成目标数据集

解决方案

你的需求是将df1中每一行对应的df2同Header Request值的行紧跟其后,而pd.merge会把匹配的行合并为单行,不符合你的预期。下面提供两种可行方法:

方法一:添加临时排序键(高效推荐)

通过给两个DataFrame添加分组标识和排序优先级,合并后按规则排序即可得到目标顺序:

import pandas as pd

# 初始化DataFrame
df1 = pd.DataFrame([{'GUID': 'login','sent': True,'Header Request': '2671257824','count': 314},
                    {'GUID': 'login','sent': True,'Header Request': '2700603520','count': 441}])
df2 = pd.DataFrame([{'GUID': 'Res','sent': False,'Header Request': '2671257824','count': 318},
                    {'GUID': 'Res','sent': False,'Header Request': '2700603520','count': 445}])

# 给df1和df2添加临时分组与排序列
df1['group_id'] = df1['Header Request']
df1['order'] = 1
df2['group_id'] = df2['Header Request']
df2['order'] = 2

# 合并并排序
combined = pd.concat([df1, df2])
df3 = combined.sort_values(by=['group_id', 'order'], ignore_index=True)

# 删除临时列
df3 = df3.drop(columns=['group_id', 'order'])

print(df3)

输出结果与你期望的df3完全一致。

方法二:遍历拼接(适合小型数据集)

逐行遍历df1,将当前行和df2中匹配的行依次追加到结果中:

import pandas as pd

# 初始化DataFrame
df1 = pd.DataFrame([{'GUID': 'login','sent': True,'Header Request': '2671257824','count': 314},
                    {'GUID': 'login','sent': True,'Header Request': '2700603520','count': 441}])
df2 = pd.DataFrame([{'GUID': 'Res','sent': False,'Header Request': '2671257824','count': 318},
                    {'GUID': 'Res','sent': False,'Header Request': '2700603520','count': 445}])

df3 = pd.DataFrame()
for _, row in df1.iterrows():
    # 追加df1当前行
    df3 = pd.concat([df3, row.to_frame().T], ignore_index=True)
    # 匹配并追加df2对应行
    match_row = df2[df2['Header Request'] == row['Header Request']]
    if not match_row.empty:
        df3 = pd.concat([df3, match_row], ignore_index=True)

print(df3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:50:21