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

Python实现DataFrame每行日期关联事件按时间先后排序

按行关联排序日期与事件对的Python实现方案

我们可以用pandas高效实现该需求,单核心即可处理百万行级数据,如需更高性能可搭配swift库扩展并行能力。

实现步骤

  • 导入pandas库,读取你的表格数据(支持csv、excel等常见格式)
  • 定义单行处理逻辑:将每行的日期-事件对打包为元组、转换日期格式后排序、再展开为固定顺序的6列
  • 对全表应用处理逻辑后导出结果

完整代码示例

import pandas as pd

# 1. 读取你的数据,此处以csv为例,excel可换用pd.read_excel
# df = pd.read_csv("你的数据文件路径.csv")

# 构造测试数据示例,可跳过该步直接读取你的真实数据
df = pd.DataFrame({
    'date1': ['2023-05-01', '2023-02-10', '2023-06-15'],
    'event1': ['出差', '会议', '培训'],
    'date2': ['2023-03-12', '2023-01-05', '2023-04-20'],
    'event2': ['团建', '休假', '项目上线'],
    'date3': ['2023-06-08', '2023-03-20', '2023-07-01'],
    'event3': ['年会', '客户拜访', '述职']
})

# 2. 定义行处理函数
def sort_date_events(row):
    # 打包三对日期事件元组
    pairs = [
        (pd.to_datetime(row['date1']), row['event1']),
        (pd.to_datetime(row['date2']), row['event2']),
        (pd.to_datetime(row['date3']), row['event3'])
    ]
    # 按日期升序排序,空日期默认排在最后,如需提前可加na_position='first'参数
    pairs_sorted = sorted(pairs, key=lambda x: x[0])
    # 展开为排序后的6个值,日期转回原字符串格式可调整strftime参数
    return pd.Series([
        pairs_sorted[0][0].strftime('%Y-%m-%d'), pairs_sorted[0][1],
        pairs_sorted[1][0].strftime('%Y-%m-%d'), pairs_sorted[1][1],
        pairs_sorted[2][0].strftime('%Y-%m-%d'), pairs_sorted[2][1]
    ], index=['date1', 'event1', 'date2', 'event2', 'date3', 'event3'])

# 3. 全表应用处理逻辑,axis=1表示按行处理
df_sorted = df.apply(sort_date_events, axis=1)

# 4. 导出结果
# df_sorted.to_csv("排序后结果.csv", index=False)

注意事项

  • 如果你的日期格式不是YYYY-MM-DD,需要在pd.to_datetime中传入format参数指定格式,避免解析错误
  • 若数据量超过100万行,可将apply替换为swifter.apply开启并行处理,提升执行效率
  • 若存在空日期/空事件值,可在排序前先过滤或填充默认值,避免排序结果不符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:24:02