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

如何在Geopandas中执行带日期条件的空间连接操作?

同时基于空间坐标与日期列连接两个DataFrame

问题描述

现有两个包含Lat(纬度)、Long(经度)及其他附加列的DataFrame,需要在匹配dt日期列的基础上,完成空间坐标的匹配连接,得到合并后的目标结果。

示例数据

import pandas as pd
import geopandas as gpd

df1 = pd.DataFrame({
                    'id': [0, 1, 2],
                    'dt': ['01-01-2022', '02-01-2022', '03-01-2022'],
                    'Lat': [33.155480, 33.155480, 33.155480],
                    'Long': [-96.731630, -96.731630, -96.731630]
                  })

df2 = pd.DataFrame({
                    'val': ['a', 'b', 'c'],
                    'dt': ['01-01-2022', '02-01-2022', '03-01-2022'],
                    'Lat': [33.155480, 33.155480, 33.155480],
                    'Long': [-96.731630, -96.731630, -96.731630]
                  })

解决方案

根据场景需求,提供两种实现方式:

1. 精确匹配日期与坐标(适用于坐标完全一致的场景)

如果两个DataFrame的Lat、Long是完全相等的精确值,直接用Pandas的merge方法,同时指定dt、Lat、Long作为连接键即可:

# 执行连接操作
merged_df = pd.merge(df1, df2, on=['dt', 'Lat', 'Long'], how='inner')
# 调整列顺序并重命名坐标列以匹配预期输出
merged_df = merged_df[['id', 'dt', 'Lat', 'Long', 'val']].rename(columns={'Lat': 'lat', 'Long': 'long'})

# 打印结果
print(merged_df)

输出结果:

id          dt        lat       long val
0   0  01-01-2022  33.155480 -96.731630   a
1   1  02-01-2022  33.155480 -96.731630   b
2   2  03-01-2022  33.155480 -96.731630   c

2. 空间邻近匹配+日期匹配(适用于坐标不完全一致的场景)

如果需要基于空间邻近关系(比如点在一定距离范围内)同时匹配日期,使用GeoPandas的空间连接功能,先按日期分组再执行空间连接:

# 将普通DataFrame转换为GeoDataFrame
gdf1 = gpd.GeoDataFrame(df1, geometry=gpd.points_from_xy(df1.Long, df1.Lat))
gdf2 = gpd.GeoDataFrame(df2, geometry=gpd.points_from_xy(df2.Long, df2.Lat))

# 按日期分组后执行空间连接(可根据需求更换predicate参数,如within、distance等)
merged_gdf = pd.concat([
    gpd.sjoin(gdf1[gdf1['dt'] == dt], gdf2[gdf2['dt'] == dt], how='inner', predicate='intersects')
    for dt in gdf1['dt'].unique()
])

# 整理列格式并重置索引
merged_gdf = merged_gdf[['id', 'dt', 'Lat', 'Long', 'val']].rename(columns={'Lat': 'lat', 'Long': 'long'}).reset_index(drop=True)

# 打印结果
print(merged_gdf)

说明

  • 方法1操作简单、效率高,适合坐标和日期完全匹配的场景;
  • 方法2支持空间邻近匹配,灵活性更强,适合坐标存在微小误差或需要范围匹配的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 06:24:35