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

解决自动生成mydata_hh_mm格式CSV文件名导入DataFrame的补零问题

问题分析与修复方案

原代码存在的问题

  • 小时范围错误:你需要覆盖06-09的小时,但代码中range(7,10)只包含了07、08、09,漏掉了06
  • 补零逻辑错误:
    • 小时部分直接拼接'0' + str(i),写法不通用(如果后续小时为10+会生成010这类错误格式)
    • 分钟部分未做补零处理,当j为个位数(如5)时,会生成mydata_07_5.csv,不符合mm为两位数字的命名规则
  • 文件读取路径错误:代码中pd.read_csv(rf'....csv')没有使用生成的file变量,导致实际读取的文件路径完全错误
  • 多次pd.concat效率低下:循环中每次拼接DataFrame会产生额外内存开销,运行效率差

修正后的代码

import pandas as pd

# 初始化空列表存储各文件的DataFrame
df_list = []

# 遍历06-09的小时(range左闭右开,所以用6到10)
for hh in range(6, 10):
    for mm in range(0, 60):
        # 用格式化字符串自动补零为两位数字
        file_name = f"mydata_{hh:02d}_{mm:02d}.csv"
        try:
            # 读取文件并加入列表
            df = pd.read_csv(file_name)
            df_list.append(df)
            print(f"已读取:{file_name}")
        except FileNotFoundError:
            # 处理文件缺失的情况,避免程序崩溃
            print(f"未找到文件:{file_name}")

# 一次性拼接所有DataFrame,重置索引
alldata = pd.concat(df_list, ignore_index=True)

关键说明

  • {hh:02d}和{mm:02d}:格式化语法,确保数字被转为两位字符串,不足两位时自动补零(比如6→06,5→05)
  • 用列表收集DataFrame:相比循环内反复拼接,这种方式内存占用更少、运行速度更快
  • 异常捕获:添加try-except可以避免因个别文件缺失导致整个流程中断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:50:34