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

如何用Python处理带日期的Excel文件名:转格式及提取至DataFrame

没问题,我来帮你搞定这两个Excel文件名处理的问题,步骤和代码都给你整理好了:

问题1:将带有时间戳的Excel文件名转换为日期时间格式

文件名里的时间戳通常分两种常见情况,我分别给你解决方案:

情况1:文件名包含Unix时间戳(比如 1620000000_sales.xlsx)

Unix时间戳是从1970年1月1日开始累计的秒数(也可能是毫秒数,注意区分),处理步骤如下:

  • 先剥离文件名的后缀,提取出时间戳字符串
  • 转成整数后用datetime.fromtimestamp()解析成日期时间对象
import os
from datetime import datetime

# 示例文件名
filename = "1620000000_sales.xlsx"
# 去掉文件后缀(比如.xlsx)
name_without_ext = os.path.splitext(filename)[0]
# 分割出时间戳部分(假设时间戳在文件名开头,用下划线分隔)
timestamp_str = name_without_ext.split("_")[0]
# 转成整数(如果是毫秒级时间戳,记得除以1000)
timestamp = int(timestamp_str)
# 转换为日期时间
dt = datetime.fromtimestamp(timestamp)

print(dt)  # 输出示例:2021-05-03 13:20:00

情况2:文件名包含格式化时间戳(比如 20210503132000_sales.xlsx,格式为YYYYMMDDHHMMSS)

这种是直接用数字拼接的日期时间字符串,我们可以指定格式来解析:

  • 提取对应长度的字符串片段
  • 用datetime.strptime()传入匹配的格式串转换
from datetime import datetime

filename = "20210503132000_sales.xlsx"
name_without_ext = filename.split(".")[0]
# 提取前14位(对应YYYYMMDDHHMMSS)
timestamp_str = name_without_ext[:14]
# 按指定格式解析
dt = datetime.strptime(timestamp_str, "%Y%m%d%H%M%S")

print(dt)  # 输出:2021-05-03 13:20:00

如果只有日期部分(比如20210503_sales.xlsx),把格式串改成"%Y%m%d"就行。


问题2:提取文件名中的日期并添加为DataFrame的新变量

针对你给出的示例文件名20190217 - myfile.xlsx,我们可以按以下步骤操作:

  1. 从文件名中提取日期字符串
  2. 转换为日期/日期时间对象
  3. 读取Excel文件后,将这个日期添加为新列

单个文件处理代码:

import pandas as pd
import os
from datetime import datetime

# 文件路径
file_path = "./20190217 - myfile.xlsx"
# 获取纯文件名(避免路径干扰)
filename = os.path.basename(file_path)
# 按分隔符" - "分割,提取日期部分
date_str = filename.split(" - ")[0]
# 转换为日期类型(如果需要完整datetime,去掉.date()即可)
file_date = datetime.strptime(date_str, "%Y%m%d").date()

# 读取Excel为DataFrame
df = pd.read_excel(file_path)
# 添加新列"file_date"
df["file_date"] = file_date

# 查看结果
print(df.head())

批量处理多个文件:

如果有一堆同格式的Excel文件,用循环批量处理并合并成一个DataFrame:

import pandas as pd
import os
from datetime import datetime

# 存放Excel文件的文件夹路径
folder_path = "./your_excel_folder/"
# 用来存储所有DataFrame的列表
all_dfs = []

# 遍历文件夹里的所有文件
for filename in os.listdir(folder_path):
    # 只处理xlsx文件
    if filename.endswith(".xlsx"):
        file_full_path = os.path.join(folder_path, filename)
        # 提取日期字符串
        date_str = filename.split(" - ")[0]
        file_date = datetime.strptime(date_str, "%Y%m%d").date()
        # 读取文件
        df = pd.read_excel(file_full_path)
        # 添加日期列
        df["file_date"] = file_date
        # 加入列表
        all_dfs.append(df)

# 合并所有DataFrame
combined_df = pd.concat(all_dfs, ignore_index=True)
print(combined_df.head())

注意:如果你的文件名分隔符不是" - "(比如下划线_),只要调整split()里的参数就行,比如filename.split("_")[0]。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 17:22:40