pandas两个存在重复值的DataFrame如何正确执行关联操作
报错原因
pandas的join方法默认要求右表索引值唯一,你的masterblok表中BLOCKID列存在重复值(如A002对应2条不同种植日期的记录),因此直接关联会触发重复索引报错。
解决方案
优先使用merge方法实现关联,它的逻辑和SQL的JOIN完全一致,天然支持关联键重复的场景,符合你需要的单条period记录匹配对应区块所有种植日期的需求:
# 左连接:保留pest_perperiod所有行,匹配对应BLOCKID的所有种植记录 result_df = pest_perperiod.merge( masterblok, left_on="FIELDCODE", right_on="BLOCKID", how="left" )
如果只需要两个表共有的FIELDCODE/BLOCKID的关联结果,把how="left"改成how="inner"即可。
效果说明
以示例数据为例,关联后A002的5条PERIOD记录,每条都会匹配到A002的2条种植日期记录,最终得到10行关联结果,完全满足后续按BLOCKID、PLANTINGDATE维度计算留存的需求。
内容的提问来源于stack exchange,提问作者Fahmi Fachrizal
相关产品推荐
相关产品推荐

