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

如何在Python 3.7中合并行列数不同的两个DataFrame

适配Python 3.7的DataFrame合并填充方案

需求场景:

  • 现有两个行列数不一致的DataFrame:df1仅1行数据,df2有7行数据
  • 需要将df1的所有列值向下填充,与df2的每一行一一对应,合并为包含所有列的完整DataFrame
  • 此前在Python 3.9+环境中使用pd.concat([df1, df2], axis=1).ffill()可实现,但该逻辑在Python 3.7中无法生效,需适配低版本方案

示例数据构造

import pandas as pd

# 构造df1
df1 = pd.DataFrame({
    'c1': ['abc'],
    'c2': ['2024-05-02'],
    'c3': ['EOC'],
    'c4': [12.7],
    'c5': ['xyz'],
    'c6': [3]
})

# 构造df2
df2 = pd.DataFrame({
    's1': [34.7, 35.7, 44.7, 67.7, 90.7, 7, 12],
    's2': [83.9, 73.5, 21.4, 56.1, 79, 21.4, 83.9],
    's3': [0]*7,
    's4': [67]*7
})

适配Python 3.7的解决方案

方法1:扩展df1行数后合并

直接将df1的行重复至与df2行数一致,再横向合并两个DataFrame:

# 扩展df1到与df2相同行数
df1_expanded = pd.concat([df1] * len(df2), ignore_index=True)
# 横向合并
result = pd.concat([df1_expanded, df2], axis=1)

方法2:利用索引对齐自动填充

通过让df1匹配df2的索引,利用pandas的索引对齐特性自动填充行数据,再合并:

# 让df1对齐df2的索引,自动填充所有行
df1_aligned = df1.loc[df2.index]
# 横向合并
result = pd.concat([df1_aligned, df2], axis=1)

两种方法都能在Python 3.7环境中稳定运行,最终得到的结果DataFrame会包含df1的所有列(每行值与原df1一致)和df2的所有列,行数与df2相同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 22:52:44