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

如何合并两个DataFrame并按首个有效值填充name1列缺失间隙?

问题与解决方案

问题描述

现有两个DataFrame:

第一个DataFrame(记为df1):

index   name
4        a
8        b
10       c

第二个DataFrame(记为df2):

index   name
4        d
5        d
6        d
7        d
8        e
9        e
10       f

需要将它们合并为如下格式的DataFrame,要求基于索引合并后,用首个有效值自动填充name1列的缺失间隙:

index   name1    name2        
4        a         d
5        a         d
6        a         d
7        a         d
8        b         e
9        b         e
10       c         f

实现方案

可以通过索引对齐合并 + 向前填充缺失值实现,具体代码如下:

import pandas as pd

# 构建原始DataFrame
df1 = pd.DataFrame({'name': ['a', 'b', 'c']}, index=[4, 8, 10])
df2 = pd.DataFrame({'name': ['d', 'd', 'd', 'd', 'e', 'e', 'f']}, index=[4,5,6,7,8,9,10])

# 基于索引合并,保留df2的全部索引
merged_df = df2.join(df1, lsuffix='2', rsuffix='1')

# 向前填充name1列的缺失值
merged_df['name1'] = merged_df['name1'].ffill()

# 调整列顺序并设置索引名,匹配目标格式
merged_df = merged_df[['name1', 'name2']].rename_axis('index')

print(merged_df)

代码说明:

  1. 使用join方法基于索引合并两个DataFrame,通过lsuffix和rsuffix区分同名列,以df2为左表确保保留所有需要的索引。
  2. 调用ffill()(向前填充)方法,用name1列的首个有效值填补后续的缺失间隙。
  3. 最后调整列顺序并设置索引名,让输出结果完全匹配目标格式。

运行代码后即可得到目标DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:11:05