【随笔】dataframe中的timestamp,转换为带有小时分钟的datetime字符串(时差和秒级问题)

前言

关于时间序列数据处理

肯定很多人感觉这个很好写,一下子搞定

hour_minute = pd.to_datetime(test_data[UnifyTimeCol])

有几个问题:

  1. 时差不对
  2. 针对的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')

几个需要注意的点:

  1. 需要明确unit=’s‘ 才是timestamp秒级别的
  2. 改变时差的pandas的这个函数tz,主要应用在index上,所以需要set一下,处理完之后再reset下,否则会有错误
  3. 最终想要啥样的string直接strftime格式化string写对应的就可以了

猜你喜欢

转载自blog.csdn.net/qq_33431368/article/details/129558413