处理纽约出租车数据集:删除dropoff_datetime早于pickup_datetime的行
处理纽约出租车行程数据中的时间异常(下车早于上车)
假设你用Python的pandas处理这份数据集,以下是具体操作步骤:
第一步:确保时间字段为datetime类型
多数情况下数据集读入的时间是字符串格式,必须转成datetime才能做时间比较:import pandas as pd # 加载数据集(这里用df指代你的数据框,实际需替换为你的读取方式) # df = pd.read_csv('your_taxi_dataset.csv') # 转换时间字段为datetime类型,errors='coerce'会把无法解析的内容转为NaT df['pickup_datetime'] = pd.to_datetime(df['pickup_datetime'], errors='coerce') df['dropoff_datetime'] = pd.to_datetime(df['dropoff_datetime'], errors='coerce') # 删除无法解析为时间的无效行 df = df.dropna(subset=['pickup_datetime', 'dropoff_datetime'])第二步:过滤异常行
两种高效的处理方式:- 直接筛选正常数据生成新数据框:
df_clean = df[df['dropoff_datetime'] >= df['pickup_datetime']] - 定位异常行索引并原地删除:
# 找出所有下车时间早于上车时间的行索引 invalid_indices = df[df['dropoff_datetime'] < df['pickup_datetime']].index # 原地删除异常行 df.drop(invalid_indices, inplace=True)
- 直接筛选正常数据生成新数据框:
验证清理结果
检查清理后是否还有异常行:# 输出异常行数量,正常应为0 print(df[df['dropoff_datetime'] < df['pickup_datetime']].shape[0])
如果用SQL处理,逻辑同理,通过WHERE条件过滤:
SELECT * FROM taxi_trips WHERE dropoff_datetime >= pickup_datetime;
内容的提问来源于stack exchange,提问作者Sergio
相关产品推荐
相关产品推荐

