如何用Python/Pandas将TXT文件中的日期时间列转为指定格式
解决Pandas合并日期时间列并转换为datetime类型的问题
核心思路
直接拼接日期和时间字符串,通过pd.to_datetime指定对应格式完成转换,这是最简洁高效的方式;如果需要分步处理,也可以分别转换日期和时间后再合并。
步骤1:读取TXT文件
先确保正确读取文件,根据你的TXT字段分隔符(空格、制表符、逗号等)调整sep参数,示例如下:
import pandas as pd # 假设字段用空格分隔,header=None表示无表头,names自定义列名 df = pd.read_csv('your_data.txt', sep='\s+', header=None, names=['index', 'date', 'time', 'other_fields'])
步骤2:合并并转换为datetime类型
方法一:拼接字符串直接转换(推荐)
利用pd.to_datetime的format参数匹配你的日期时间格式,一步到位:
# 拼接date(YYYYMMDD)和time(HHMMSS)字符串,指定格式转换 df['datetime'] = pd.to_datetime(df['date'] + df['time'], format='%Y%m%d%H%M%S')
- 若你的日期是两位年份(如
100301对应2010-03-01),把format里的%Y改成%y即可。 - 如果存在无效的日期时间值,可添加
errors='coerce'将其转为NaT(缺失时间值),方便后续处理:df['datetime'] = pd.to_datetime(df['date'] + df['time'], format='%Y%m%d%H%M%S', errors='coerce')
方法二:分步转换后合并
如果需要拆分处理日期和时间,可将日期转为datetime,时间转为timedelta后相加:
# 转换日期列 df['date_dt'] = pd.to_datetime(df['date'], format='%Y%m%d') # 将HHMMSS格式转为HH:MM:SS,再转为timedelta类型 df['time_delta'] = pd.to_timedelta( df['time'].str.slice(0,2) + ':' + df['time'].str.slice(2,4) + ':' + df['time'].str.slice(4,6) ) # 合并为datetime列 df['datetime'] = df['date_dt'] + df['time_delta']
可选:转为指定格式的字符串
如果需要将datetime类型转为YYYY-MM-DD HH:MM:SS格式的字符串列(注意:datetime类型建议保留原类型用于时间运算,字符串仅用于展示):
df['datetime_str'] = df['datetime'].dt.strftime('%Y-%m-%d %H:%M:%S')
内容的提问来源于stack exchange,提问作者Ches
相关产品推荐
相关产品推荐

