Pands批量更改excel日期格式

本文介绍了一位技术专家在进行时序预测时遇到的问题,如何使用Python将Excel文件中的日期列从字符串格式转换为数值格式,以便于计算。作者提供了使用pandas和openpyxl库实现的脚本,用于批量处理Excel文件中的日期列并保存为1900-01-01以来的天数表示。
摘要由CSDN通过智能技术生成

作者是做时序预测相关的深度学习的,在数据处理中发现日期格式在处理中有许多的不方便的地方,而且时序预测中日期并没有语义信息,因此为了方便计算就把日期格式改为数值格式。

作者转数值的方法就是excel中的标准方法,指定的日期格式(如 "2013-08-26")转换为Excel中的数值格式(即距离1900-01-01的天数),注意有些较旧MAC版本的excel是从1904年开始的,大家调整时也可以自己选择。

在这个脚本中,我们首先读取Excel文件,然后遍历指定的日期列名。对于每个日期列,我们尝试将其从字符串转换为datetime类型,然后进一步转换为从1900-01-01开始的天数。最后,我们使用to_excel方法将修改后的数据框保存回原文件路径,从而覆盖原有的Excel文件。

确保将folder_pathdate_column_names替换为适合你的实际路径和列名。同时,这个脚本假设你的日期列是字符串类型,并且格式是"YYYY-MM-DD"。如果日期列的格式有所不同,你需要调整pd.to_datetime中的format参数来匹配你的实际格式。

import os  
import pandas as pd  
  
# 设置文件夹路径和要转换的列名列表  
folder_path = 'path_to_your_folder'  # 替换为你的文件夹路径  
date_column_names = ['Column1', 'Column2']  # 替换为你要转换的列名  
  
# 获取文件夹中所有Excel文件的路径  
excel_files = [f for f in os.listdir(folder_path) if f.endswith('.xlsx')]  
  
# 遍历每个Excel文件  
for file in excel_files:  
    file_path = os.path.join(folder_path, file)  
      
    # 读取Excel文件  
    df = pd.read_excel(file_path, engine='openpyxl')  
      
    # 遍历指定要转换的列名  
    for col_name in date_column_names:  
        if col_name in df.columns and pd.api.types.is_string_dtype(df[col_name]):  
            # 尝试将字符串格式的日期转换为datetime类型  
            df[col_name] = pd.to_datetime(df[col_name], format='%Y-%m-%d', errors='coerce')  
              
            # 检查转换是否成功,并转换为Excel中的天数表示(浮点数)  
            if pd.api.types.is_datetime64_any_dtype(df[col_name].dtype):  
                # Excel日期从1900-01-01开始,但需要考虑1900年的闰年问题  
                excel_epoch = pd.Timestamp('1899-12-30')  
                df[col_name] = (df[col_name] - excel_epoch) / pd.Timedelta(days=1)  
      
    # 保存修改后的Excel文件,覆盖原文件  
    df.to_excel(file_path, index=False, engine='openpyxl')  
      
    print(f"Converted and overwritten {file}")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值