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

使用Pandas移除行程数据中的冲突错误记录

解决行程冲突记录移除问题

步骤说明

  • 先将时间字符串转换为Pandas可识别的datetime类型,这是时间比较的基础。
  • 按用户姓名分组,对每组内的行程按出发时间排序,确保按时间顺序检查行程。
  • 遍历每组行程,标记出与已有行程重叠的冲突记录:如果当前行程的出发时间早于上一个保留行程的到达时间,说明行程冲突,需要移除。
  • 最后过滤掉冲突记录,得到干净的数据集。

完整代码实现

import pandas as pd

# 原始数据
df = pd.DataFrame({
    "Name":["A","B","C","A"],
    "Dep_station":["Delhi","Bangalore","Chennai","Delhi"],
    "Arr_station":["Bangalore","Chennai","Delhi","Bangalore"],
    "Dep_time":["02-01-2022 10:00:00", "02-02-2022 10:00:00", "02-03-2022 10:00:00", "03-01-2022 10:00:00"],
    "Arr_time":["04-01-2022 22:00:00", "04-02-2022 19:00:00", "05-03-2022 18:00:00", "05-01-2022 22:00:00"]
})

# 1. 转换时间列类型(匹配原始日-月-年格式)
df['Dep_time'] = pd.to_datetime(df['Dep_time'], format='%d-%m-%Y %H:%M:%S')
df['Arr_time'] = pd.to_datetime(df['Arr_time'], format='%d-%m-%Y %H:%M:%S')

# 2. 按姓名分组,每组按出发时间排序
df_sorted = df.sort_values(['Name', 'Dep_time']).reset_index(drop=True)

# 3. 标记冲突记录
def mark_conflicts(group):
    last_arr_time = pd.NaT
    group['is_conflict'] = False
    for idx, row in group.iterrows():
        if pd.notna(last_arr_time) and row['Dep_time'] < last_arr_time:
            group.loc[idx, 'is_conflict'] = True
        else:
            last_arr_time = row['Arr_time']
    return group

# 应用冲突标记逻辑到每个用户组
df_with_conflicts = df_sorted.groupby('Name', group_keys=False).apply(mark_conflicts)

# 4. 过滤冲突记录并删除辅助列
result_df = df_with_conflicts[~df_with_conflicts['is_conflict']].drop('is_conflict', axis=1)

# 输出最终结果
print(result_df)

代码解释

  • 时间转换:通过指定%d-%m-%Y格式,确保Pandas正确解析原始数据中的日-月-年日期结构。
  • 排序分组:按用户和出发时间排序,保证行程检查的时间顺序,避免漏判冲突。
  • 冲突标记:遍历每个用户的行程,若当前行程出发时间早于上一个有效行程的到达时间,则标记为冲突;否则更新上一个有效行程的到达时间。
  • 结果过滤:移除标记为冲突的行,并清理辅助标记列,得到无冲突的行程数据集。

输出结果

Name Dep_station Arr_station           Dep_time           Arr_time
0    A       Delhi    Bangalore 2022-01-02 10:00:00 2022-01-04 22:00:00
1    B    Bangalore     Chennai 2022-02-02 10:00:00 2022-02-04 19:00:00
2    C     Chennai       Delhi 2022-03-02 10:00:00 2022-03-05 18:00:00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:50:26