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

如何基于另一df的经纬度范围条件删除主df的对应行?

报错原因

你代码中出现该报错的核心原因是:if (x > incidents_locations['Latitude'])语句里,incidents_locations['Latitude']是完整的Series列数据,和单个值x比较后返回的是布尔值组成的Series,而Python的if判断需要接收单个布尔值,无法直接处理Series类型的判断结果,因此抛出真值模糊的错误。
同时你原有的遍历df_limit逐行判断删除的逻辑效率极低,且会出现重复删除、结果不符合预期的问题。

解决方案

你的需求是保留主df中经纬度落在df_limit的经纬度范围内的行,直接通过pandas向量化操作即可完成,无需循环:

  1. 首先提取df_limit中的经纬度合法边界
# 计算纬度的上下限
lat_min, lat_max = df_limit['Latitude'].min(), df_limit['Latitude'].max()
# 计算经度的上下限
lon_min, lon_max = df_limit['Longitude'].min(), df_limit['Longitude'].max()
  1. 直接通过布尔索引过滤主df
# 同时校验经纬度,保留均在合法范围内的行
df_filtered = incidents_locations[
    (incidents_locations['Latitude'].between(lat_min, lat_max)) &
    (incidents_locations['Longitude'].between(lon_min, lon_max))
]

如果你需要分开处理纬度和经度的过滤,也可以分两步写:

# 第一步过滤合法纬度
temp_df = incidents_locations[incidents_locations['Latitude'].between(lat_min, lat_max)]
# 第二步过滤合法经度,得到最终结果
df_filtered = temp_df[temp_df['Longitude'].between(lon_min, lon_max)]

特殊场景说明:如果你要求主df的经纬度必须完全匹配df_limit中存在的某一个经纬度点,而非落在区间范围内,可以改用isin方法实现:

df_filtered = incidents_locations[
    (incidents_locations['Latitude'].isin(df_limit['Latitude'])) &
    (incidents_locations['Longitude'].isin(df_limit['Longitude']))
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:51:02