合并不同长度DataFrame并保留长表长度插入NaN的实现方法
DataFrame合并最优解决方案
你要实现的需求可以直接用Pandas内置的merge函数完成,底层为C实现,执行效率远高于手写for循环,处理大规模数据也不会有性能问题。
核心逻辑是以长度更长的DataFrame作为左表,按公共匹配列做左连接,短表无匹配值的位置会自动填充NaN,完全适配你的需求。
示例代码
import pandas as pd # 动态判断长短表,不需要硬编码指定左表 if len(df1) >= len(df2): left_df, right_df = df1, df2 else: left_df, right_df = df2, df1 # 按公共列合并,on参数填你实际的匹配列名,示例中匹配列列名为0 merged_df = pd.merge( left=left_df, right=right_df, on='0', how='left' )
特殊场景适配
- 如果你是按行索引对齐而非普通列匹配,把
merge的参数替换为left_index=True, right_index=True即可,无需填写on参数。 - 如果你确定不需要匹配键、仅要按行顺序对齐,直接用
join方法更简洁:
merged_df = left_df.join(right_df)
以上方法输出的结果和你示例中的目标merged df完全一致。
内容的提问来源于stack exchange,提问作者morhc
相关产品推荐
相关产品推荐

