如何用Pandas将独立时分秒列合并为单个时间列并构建时序索引?
问题:创建时间列并设置索引以实现时间序列重采样
需求描述
想要创建一个单个时间列,以便通过重采样日期/时间索引来绘制时间序列图,但在合并列及设置索引时遇到问题。
已尝试的代码
读取数据及初始尝试
colnames=['time_ms','power','chisq','stations','alt','hour','min','sec','time_frac','lat','lon'] df = pd.read_csv('/data/selected_lma_matlab_20210914.txt',delim_whitespace=True, header=None, names=colnames) # 曾尝试在读取时直接解析日期作为索引(未成功) # df = pd.read_csv('/data/selected_lma_matlab_20210914.txt',delim_whitespace=True, header=None,names=colnames,parse_dates=[[5, 7]], index_col=0) # df = pd.read_csv('/data/selected_lma_matlab_20210914.txt',delim_whitespace=True, header=None,names=colnames,infer_datetime_format=True,parse_dates=[[5, 6]], index_col=0)
尝试添加完整日期列
# 尝试拼接日期与时间字段,但未成功 s = df['hour'].mul(10000) + df['min'].mul(100) + df['sec'] df['date'] = pd.to_datetime('2021-09-14 ' + s.astype(int), format='%Y-%m-%d %H%M%S.%f')
创建时间列并设置索引
# 成功生成时间列,但设置索引后仍无法正常重采样 df['time'] = (pd.to_datetime(df['hour'].astype(str) + ':' + df['min'].astype(str), format='%H:%M') .dt.time) df['Datetime'] = pd.to_datetime(df['time']) df.set_index('Datetime')
统计列与重采样尝试
# 创建用于统计的标识列,尝试重采样生成时序数据 df['tot'] = 1 df2 = df[['tot']].resample('5min').sum()
当前问题
尽管尝试了上述多种方法,仍持续遇到日期时间格式或索引相关错误,无法完成重采样操作以生成可用的时间序列数据。
内容的提问来源于stack exchange,提问作者jakehou97
相关产品推荐
相关产品推荐

