tjdnbj 2024-02-18 15:51 采纳率: 36.8%
浏览 5

出租车轨迹数据预处理基础提问1

我尝试剔除不在研究范围内的数据,以下是我的代码,为何运行后出现KeyError: 'lon'的错误呢?该如何修改呢?

import transbigdata as tbd
import pandas as pd
import geopandas as gpd
#读取数据
df = pd.read_csv('C:/Users/出租2019/result1.0 - 副本.csv',header = None,encoding='gbk')
#删除含有缺失值的数据
df_clean = df.dropna()
# 定义研究范围的经纬度  
min_lon = 107.40  
max_lon = 109.49  
min_lat = 33.42  
max_lat = 34.45  
  
filtered_df = df_clean[(df_clean['lon'] >= min_lon) & (df_clean['lon'] <= max_lon) &   
                 (df_clean['lat'] >= min_lat) & (df_clean['lat'] <= max_lat)]
  • 写回答

2条回答 默认 最新

  • GISer Liu 2024-02-18 15:59
    关注

    该回答引用自GPT-3.5,由博主GIS_Liu编写:

    根据您提供的代码和报错信息,出现 KeyError: 'lon' 的错误是因为在 df_clean 数据框中没有名为 'lon' 的列,这可能是由于您在读取数据时没有指定列名。解决这个问题的方法是在读取数据时指定列名,然后再进行数据清洗和筛选。

    以下是修改后的代码:

    import transbigdata as tbd
    import pandas as pd
    import geopandas as gpd
    
    # 读取数据并指定列名
    df = pd.read_csv('C:/Users/出租2019/result1.0 - 副本.csv', header=None, encoding='gbk', names=['lon', 'lat'])
    
    # 删除含有缺失值的数据
    df_clean = df.dropna()
    
    # 定义研究范围的经纬度
    min_lon = 107.40
    max_lon = 109.49
    min_lat = 33.42
    max_lat = 34.45
    
    # 进行数据筛选
    filtered_df = df_clean[(df_clean['lon'] >= min_lon) & (df_clean['lon'] <= max_lon) &
                           (df_clean['lat'] >= min_lat) & (df_clean['lat'] <= max_lat)]
    

    这样修改后,应该就能够正确执行并筛选出在指定经纬度范围内的数据了。

    img

    如果该回答解决了您的问题,请采纳!如果没有,请详述问题所在!

    评论

报告相同问题?

问题事件

  • 创建了问题 2月18日