You need to enable JavaScript to run this app. pandas如何合并两个不等长DataFrame 实现单行表值重复填充至多行
优惠活动
大模型
产品
解决方案
定价
更多

pandas如何合并两个不等长DataFrame 实现单行表值重复填充至多行

单行DataFrame逐行重复填充到多行主表的实现方法

不需要做复杂的表连接逻辑,pandas原生就支持几种高效实现方式,完全匹配你需要的输出效果:

方法1:直接广播赋值(最省资源,会修改原df1)

pandas支持把单个标量值自动填充到整列,只需要遍历df2的列,把对应列的单行值取出来赋值给df1的新列即可:

# 遍历df2的所有列,取每列的第一个(也是唯一一个)值,广播填充到df1的新列
for col in df2.columns:
    df1[col] = df2[col].iloc[0]

运行后df1直接生成你期望的带固定a、b、c值的4行结果,没有临时中间表开销。

方法2:横向拼接(不修改原df1)

如果需要保留原df1的内容不被改动,可以先把df2的单行重复到和df1相同的行数,再按索引横向拼接:

# 把df2的单行重复len(df1)次,重置索引后和df1按列拼接
df_result = pd.concat([
    df1,
    df2.loc[df2.index.repeat(len(df1))].reset_index(drop=True)
], axis=1)

方法3:交叉连接(代码最短,适配新版pandas)

pandas 1.2.0及以上版本支持交叉连接模式,因为df2只有1行,交叉连接的结果天然就是df1的每一行都匹配df2的这行固定值:

df_result = df1.merge(df2, how="cross")

注意事项

  • 不要直接写df1[col] = df2[col]这类赋值逻辑,两个表的索引不匹配会导致整列出现NaN值,一定要通过iloc[0]取到具体的标量值再赋值
  • 上述方法仅适用于df2为单一行的场景,如果后续df2行数大于1,需要根据实际的列匹配规则调整合并逻辑,不能直接套用

内容的提问来源于stack exchange,提问作者Martin Yordanov Georgiev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.11 14:45:09