Pandas多表合并时保留主dataframe原有行数的方法问询
问题解决方案
你出现合并后行数异常的核心原因是未使用匹配的关联规则,两个衍生表均从主表生成,和主表行一一对应,可直接用以下两种简便方法实现行数完全匹配的合并:
方法1:按索引横向拼接(最简便,适用于三个表行顺序/索引完全对应场景)
直接使用pd.concat指定横向拼接轴即可:
import pandas as pd # 假设主表为df_main,两个衍生表分别为df_derived1、df_derived2 df_result = pd.concat([df_main, df_derived1, df_derived2], axis=1)
方法2:按主键左匹配(适用于有唯一主键、索引不一致场景)
如果两个衍生表带有和主表一致的唯一主键列(比如示例中的用户id/订单id类字段),用左连接合并即可保证主表行数不丢失:
# 假设唯一关联主键为user_id df_result = df_main.merge(df_derived1, on="user_id", how="left")\ .merge(df_derived2, on="user_id", how="left")
参考表示例
- 原始主dataframe示例:

- 第一个衍生dataframe示例:

- 第二个衍生dataframe示例:

- 预期最终输出效果:

注意事项
- 若使用concat方法,需提前确认三个表的行顺序完全一致,避免出现数据错位
- 若使用merge方法,需确保衍生表的主键无重复值,否则会生成笛卡尔积导致行数超出预期
内容的提问来源于stack exchange,提问作者Passive_coder
相关产品推荐
相关产品推荐

