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

如何基于另一DataFrame的event列匹配并扩充目标DataFrame数据

高效实现DataFrame基于event的关联匹配

嘿,针对你这个大数据量的关联需求,我给你推荐几个靠谱的pandas实现方案,毕竟300万行的df1可不能用太笨重的方法拖慢效率~

基础方案:用merge快速关联

最直接的方式就是用pandas的merge函数,指定以event为关联键,并且用左连接保证df2的所有行都能保留:

import pandas as pd

# 只提取df1中需要的列,减少内存开销
df1_subset = df1[['event', 'lat', 'long']]
# 左连接:df2的所有行都会保留,匹配到的行填充lat/long,没匹配到的为NaN
df2_with_coords = df2.merge(df1_subset, on='event', how='left')

优化方案:索引关联提升性能

如果你的数据量特别大,用索引做关联会比普通merge更快,因为pandas对索引操作有专门的优化:

# 给df1的event列设置索引,同时只保留需要的列
df1_indexed = df1[['event', 'lat', 'long']].set_index('event')
# 给df2的event列设置索引后,用join关联
df2_indexed = df2.set_index('event')
df2_with_coords = df2_indexed.join(df1_indexed, how='left').reset_index()

这样处理的话,关联速度会比普通merge快不少,尤其适合你这种百万级别的数据集。

重要前置检查:处理重复的event

别忘了先检查df1里有没有重复的event值——如果同一个event对应多组lat/long,merge后会让df2的行重复,不符合你的需求。可以先去重:

# 保留每个event的第一组lat/long,也可以根据需求选last或者聚合
df1_unique = df1[['event', 'lat', 'long']].drop_duplicates(subset='event', keep='first')
# 再进行关联
df2_with_coords = df2.merge(df1_unique, on='event', how='left')

上面这几个方案都能高效解决你的问题,根据你的实际数据情况选就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:01:33