如何为pd.to_datetime指定自定义日期 解决多CSV时间列补全日期不符问题
实现方法
你需要在读入每个CSV文件时就绑定对应日期,再做时间格式转换,具体实现代码如下:
from datetime import datetime, timedelta import pandas as pd # 构造日期与对应文件的映射关系 today = datetime.now() file_info_list = [ # 格式:(对应日期字符串, 文件路径) (today.strftime('%Y-%m-%d'), f"{today.strftime('%Y-%m-%d')}.csv"), ((today + timedelta(days=1)).strftime('%Y-%m-%d'), f"{(today + timedelta(days=1)).strftime('%Y-%m-%d')}.csv") ] processed_dfs = [] for target_date, csv_path in file_info_list: # 读取单份CSV tmp_df = pd.read_csv(csv_path) # 主动拼接指定日期与时分秒后再转datetime格式 tmp_df['time'] = pd.to_datetime(target_date + ' ' + tmp_df['time'], errors='coerce') processed_dfs.append(tmp_df) # 合并所有处理完成的数据 final_data = pd.concat(processed_dfs, ignore_index=True)
逻辑说明
- 原有代码的问题在于先合并了不同日期的CSV再做时间转换,
pd.to_datetime无法区分不同行所属的文件日期,遇到仅含时分秒的时间字符串时会统一用当前系统日期补全,导致次日文件的时间日期错误。 - 上述方案在读取单份CSV时就为其绑定对应日期,主动拼接日期和时间字符串后再转换格式,完全避免默认补全逻辑带来的错误。
内容的提问来源于stack exchange,提问作者Julian
相关产品推荐
相关产品推荐

