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

如何在Pandas中移除日期时间戳并转换为mm/dd/yyyy格式

因为你用dtype=str把所有列都读成了字符串,原本的日期被转成了带时间戳的字符串格式(比如2021-05-10 00:00:00),要转成mm/dd/yyyy格式,得先把这些字符串转回日期类型,再重新格式化。下面是具体的处理方法:

方法一:指定已知日期列处理

如果你明确知道哪些列是日期列,直接针对这些列处理最稳妥:

import pandas as pd

# 读取文件,保留所有列的字符串格式(包括带前缀0的列)
file_path = pd.ExcelFile(r'C:\Users\User\Downloads\Report4.xlsx')
workbook = pd.read_excel(file_path, sheet_name=None, dtype=str)

# 遍历每个工作表
for sheet_name, df in workbook.items():
    # 替换成你实际的日期列名称,比如['订单日期', '发货日期']
    target_date_cols = ['日期']
    
    for col in target_date_cols:
        # 第一步:把字符串转成datetime类型;第二步:格式化为mm/dd/yyyy的字符串
        df[col] = pd.to_datetime(df[col]).dt.strftime('%m/%d/%Y')

# 保存处理后的所有工作表到新Excel文件
with pd.ExcelWriter('处理完成的报表.xlsx') as writer:
    for sheet_name, df in workbook.items():
        df.to_excel(writer, sheet_name=sheet_name, index=False)

方法二:自动识别日期列处理

如果你不清楚具体哪些列是日期列,可以通过字符串格式自动匹配:

import pandas as pd

file_path = pd.ExcelFile(r'C:\Users\User\Downloads\Report4.xlsx')
workbook = pd.read_excel(file_path, sheet_name=None, dtype=str)

for sheet_name, df in workbook.items():
    # 筛选所有值符合"YYYY-MM-DD HH:MM:SS"格式的列
    date_cols = [
        col for col in df.columns 
        if df[col].str.match(r'^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$').all()
    ]
    
    for col in date_cols:
        # 处理时加入errors='coerce',避免无效值导致报错(无效值会转成空字符串)
        df[col] = pd.to_datetime(df[col], errors='coerce').dt.strftime('%m/%d/%Y')

# 保存结果
with pd.ExcelWriter('处理完成的报表.xlsx') as writer:
    for sheet_name, df in workbook.items():
        df.to_excel(writer, sheet_name=sheet_name, index=False)

注意事项

  • 处理后日期列会保持字符串格式,不会影响其他带前缀0的列(这些列本来就是字符串类型,未被改动)
  • 如果某些单元格不是标准的日期时间字符串,errors='coerce'会把它们转成NaN,再经过strftime变成空字符串,你可以根据需求用fillna填充默认值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:43:16