如何为高频起始站点统计结果快速添加经纬度信息?
高效获取繁忙站点经纬度的解决方案
直接给你最快的解决思路:先做一个站点ID到经纬度的唯一映射表,再和你的top15站点数据合并,既快又不会产生冗余。
步骤如下:
第一步:从原始骑行数据中提取唯一的站点经纬度映射
原始DF里每个站点ID会重复出现无数次,先把每个站点ID对应的经纬度只保留一条记录:# 替换成你实际的经纬度列名,比如start_latitude、start_longitude station_coords = df[['startID', 'start_lat', 'start_lng']].drop_duplicates(subset='startID')这一步会生成一个只有唯一站点ID和对应经纬度的小DF,数据量极小。
第二步:把你的top15站点数据整理成标准DF
之前的value_counts结果转成带列名的DF:top_starts = df['startID'].value_counts().head(15).reset_index(name='ride_count') # 若reset_index后站点ID列名不是startID,可重命名 # top_starts.rename(columns={'index': 'startID'}, inplace=True)第三步:合并映射表和top15数据
因为映射表每个站点ID只有一行,merge只会精确匹配,不会产生一对多的冗余,速度极快:top_starts_with_coords = top_starts.merge(station_coords, on='startID', how='left')
这样得到的top_starts_with_coords就是你要的:包含站点ID、骑行次数、对应经纬度的简洁DF,整个过程几秒就能完成,完全替代慢到离谱的迭代遍历。
内容的提问来源于stack exchange,提问作者Feikname
相关产品推荐
相关产品推荐

