如何用Pandas合并带时区DATE与TIME列生成无时区MERGEDATE列?
解决Pandas合并带时区DATE与int类型TIME列的问题
以下是分步实现方案:
第一步:转换DATE列并移除时区
先把object类型的DATE列转为带时区的datetime,再移除时区信息:import pandas as pd df = pd.read_csv('Automobile.csv') # 转换为datetime并移除时区 df['DATE'] = pd.to_datetime(df['DATE']).dt.tz_localize(None)第二步:处理int类型的TIME列
将int64类型的时间值(如1500、520)转换为标准的HH:MM格式字符串:# 补全为4位字符串,再分割为小时和分钟 df['TIME_FORMATTED'] = df['TIME'].astype(str).str.zfill(4).str.replace(r'(\d{2})(\d{2})', r'\1:\2', regex=True)这里
str.zfill(4)会把520补成0520,正则替换后变成05:20,1500则变成15:00。第三步:合并生成MERGEDATE列
直接将处理后的DATE(datetime类型)与TIME_FORMATTED转为时间增量后相加,得到无时区的合并datetime列:df['MERGEDATE'] = df['DATE'] + pd.to_timedelta(df['TIME_FORMATTED'])也可以用字符串拼接后转datetime的方式,效率稍低但直观:
df['MERGEDATE'] = pd.to_datetime(df['DATE'].astype(str) + ' ' + df['TIME_FORMATTED'])可选:清理中间列
如果不需要保留TIME_FORMATTED列,可以删除:df.drop('TIME_FORMATTED', axis=1, inplace=True)
内容的提问来源于stack exchange,提问作者user4237042
相关产品推荐
相关产品推荐

