如何合并两个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)
代码说明:
- 使用
join方法基于索引合并两个DataFrame,通过lsuffix和rsuffix区分同名列,以df2为左表确保保留所有需要的索引。 - 调用
ffill()(向前填充)方法,用name1列的首个有效值填补后续的缺失间隙。 - 最后调整列顺序并设置索引名,让输出结果完全匹配目标格式。
运行代码后即可得到目标DataFrame。
内容的提问来源于stack exchange,提问作者qwer
相关产品推荐
相关产品推荐

