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

如何使用Python按日期列值批量移动多个CSV文件到对应月份文件夹

问题原因

你通过df.iloc[0]['Date']获取到的日期值为pandas Timestamp或datetime类型,不属于字符串类型,因此无法直接调用字符串专属的endswith、contains等方法。

完整实现方案

1. 导入依赖库

import os
import shutil
import pandas as pd
from pathlib import Path

2. 配置路径参数

修改下方路径为你自己的本地路径即可:

# 未分类CSV存放的父文件夹路径
UNCLASSIFIED_FOLDER = Path("/替换为你的未分类文件夹路径")
# 分类后月份文件夹的根存放路径
CLASSIFIED_ROOT = Path("/替换为你的分类根路径")

3. 批量处理逻辑

以下代码会自动遍历所有CSV、读取日期、生成对应月份文件夹、移动文件,同时针对大文件做了读取优化:

for csv_path in UNCLASSIFIED_FOLDER.glob("*.csv"):
    # 仅读取第一行数据,无需加载整个文件,大幅提升数千个文件的处理速度
    single_row_df = pd.read_csv(csv_path, nrows=1)
    # 统一转成Timestamp格式,自动兼容绝大多数日期写法
    date_value = pd.to_datetime(single_row_df.iloc[0]["Date"])
    # 生成月份目录名,格式示例:2024-05
    month_folder = f"{date_value.year}-{date_value.month:02d}"
    target_path = CLASSIFIED_ROOT / month_folder
    # 自动创建不存在的目录
    target_path.mkdir(parents=True, exist_ok=True)
    # 移动文件,若需要保留原文件仅复制,替换为 shutil.copy2
    shutil.move(str(csv_path), str(target_path / csv_path.name))
补充说明
  • 如果你确实需要使用字符串匹配方法,只需将拿到的日期值转成字符串即可:date_str = str(date_value),之后即可正常调用date_str.endswith()等字符串方法,判断子串也可以直接用"xxx" in date_str代替contains方法
  • 若你的日期列名不是Date,修改代码中对应列名即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:18:03