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

如何在加载CSV原始数据文件前按文件名时间戳排序?

解决方案:按文件名时间戳排序后加载CSV

问题出在字符串排序逻辑上:文件名里的小时数如果是单数字(比如9),字符串比较时"9"会被判定为大于"10",导致同一天早生成的文件反而排在后面。我们可以通过提取时间戳并转换为可正确排序的数值,先对文件列表排序再加载。

步骤1:定义时间戳提取函数

从文件名中拆分出时间组件,转换为整数元组,确保排序逻辑符合时间顺序:

from pathlib import Path
import pandas as pd

def get_time_key(file_path):
    stem = Path(file_path).stem
    # 按下划线拆分文件名,提取时间部分
    _, ym, day, hour, minute, second = stem.split("_")
    # 拆分年和月(比如202211拆为2022、11)
    year = int(ym[:4])
    month = int(ym[4:])
    # 返回整数元组,用于排序比较
    return (year, month, int(day), int(hour), int(minute), int(second))

步骤2:对文件列表排序

用上面的函数作为排序依据,对文件列表进行升序排序:

# 按时间从早到晚排序文件
sorted_files = sorted(filenames, key=get_time_key)

步骤3:按排序后的顺序加载文件

遍历排序后的列表读取CSV即可:

for file in sorted_files:
    name_only = Path(file).stem
    df = pd.read_csv(file, skiprows=10, sep=";")
    # 这里可添加数据合并、处理等后续逻辑

补充说明

  • 只要文件名格式固定为前缀_YYYYMM_D_H_M_S,这个方法就能稳定工作;如果存在其他格式的文件,可以先通过过滤(比如判断拆分后的元素数量)筛选出目标文件再排序。
  • 整数元组的比较会按年→月→日→时→分→秒的顺序依次进行,完全符合时间的自然排序逻辑,彻底解决单小时数排序异常的问题。

内容的提问来源于stack exchange,提问作者will.wo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:12:21