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

不同长度DataFrame的内连接合并问题求助

解决DataFrame合并问题:保留小表所有数据并匹配大表记录

嗨,我来帮你搞定这个合并需求~首先得明确:你想要的其实是左连接(Left Join),而不是内连接哦!内连接只会保留两张表中都存在的beer_name记录,但你需要保留threshold_shaped里的所有数据,左连接正好能满足这个要求。

核心思路

  • 把threshold_shaped作为左表(611行,beer_name唯一),确保它的每一行都被保留
  • 把beer作为右表(1586k行,beer_name不唯一),将匹配到的brewery_name关联到左表对应行
  • 左连接后,左表的所有行都会保留,右表中没有匹配的部分会用NaN填充

具体代码实现

用Pandas的merge函数就能轻松搞定,而且为了提升效率,建议只选取右表中需要的列(避免加载不必要的数据):

import pandas as pd

# 执行左连接合并
merged_df = pd.merge(
    left=threshold_shaped,
    right=beer[["brewery_name", "beer_name"]],  # 只取需要的两列,节省内存和运行时间
    on="beer_name",
    how="left"
)

关键说明

  1. 行数变化说明:因为beer里的beer_name不唯一,合并后merged_df的行数会大于等于611——左表的每一行会对应右表中所有匹配的beer_name记录,这是完全正常的结果。
  2. 缺失值处理:如果threshold_shaped里的某个beer_name在beer中找不到匹配,对应的brewery_name列会显示NaN,你可以根据后续需求处理这些缺失值(比如填充默认名称)。
  3. 性能优化提示:由于beer的行数非常大,只选取需要的列进行合并能显著减少内存占用和运行时间,这一步很实用哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:54:50