如何动态合并两个Python DataFrame并填充小DataFrame的缺失行值
解决方案
方法1:用ffill()向前填充
合并后的DataFrame里,PART NUM和DATE列只有首行有值,其余都是NaN,直接用向前填充就能批量把首行的值覆盖到所有行:
# 先执行合并操作(建议把变量名改成merged_df避免和原df1混淆) merged_df = pd.concat([df2, df1], axis=1) # 对指定列做向前填充 merged_df[['PART NUM', 'DATE']] = merged_df[['PART NUM', 'DATE']].ffill()
方法2:直接提取首行值赋值
原df1只有1行数据,合并后首行的PART NUM和DATE就是需要重复的固定值,直接把这两个值赋值给整列更高效:
merged_df = pd.concat([df2, df1], axis=1) # 提取首行的目标列值 part_num_val = merged_df['PART NUM'].iloc[0] date_val = merged_df['DATE'].iloc[0] # 赋值给整列 merged_df['PART NUM'] = part_num_val merged_df['DATE'] = date_val
方法3:合并前提前处理(更优雅)
不用先合并再填充,合并前把原df1的行重复到和df2一致的行数,再横向合并:
# 把df1的行重复len(df2)次,重置索引后和df2合并 merged_df = pd.concat([ df2, df1.loc[df1.index.repeat(len(df2))].reset_index(drop=True) ], axis=1)
以上三种方法都无需手动重复拼接df1,能自动适配df2的任意行数。
内容的提问来源于stack exchange,提问作者L. Full
相关产品推荐
相关产品推荐

