前言
关于时间序列数据处理
肯定很多人感觉这个很好写,一下子搞定
hour_minute = pd.to_datetime(test_data[UnifyTimeCol])
有几个问题:
- 时差不对
- 针对的timestamp是微秒级别的,而大多数我们用的都是秒级别,就是10位数,比如1675265640就代表了2023-2-1 23:34:0(可以通过:https://www.beijing-time.org/shijianchuo/)
解决方案
hour_minute = pd.to_datetime(test_data[UnifyTimeCol], unit='s')
test_data.index = hour_minute
test_data.index = test_data.index.tz_localize('UTC').tz_convert('Asia/Shanghai')
del test_data[UnifyTimeCol]
test_data = test_data.reset_index()
test_data[UnifyTimeCol] = test_data[UnifyTimeCol].dt.strftime('%H:%M')
几个需要注意的点:
- 需要明确unit=’s‘ 才是timestamp秒级别的
- 改变时差的pandas的这个函数tz,主要应用在index上,所以需要set一下,处理完之后再reset下,否则会有错误
- 最终想要啥样的string直接strftime格式化string写对应的就可以了