gpt4 book ai didi

Pandas 将日期时间列向后移动一小时

转载 作者:行者123 更新时间:2023-12-04 15:24:54 27 4
gpt4 key购买 nike

我在 DF (df1) 中有数据,其开始和结束如下所示,我试图移动下面的“0”和“1”列,以便日期和时间向后移动一小时,以便日期和时间从小时 == 0 开始,而不是小时 == 1。

数据开始(df1)-

          0    1         2         3         4    5         6       7  
0 20160101 100 7.977169 109404.0 20160101 100 4.028678 814.0
1 20160101 200 8.420204 128546.0 20160101 200 4.673662 2152.0
2 20160101 300 9.515370 165931.0 20160101 300 8.019863 8100.0

数据结束 (df1) -
             0     1         2        3         4     5         6      7  
8780 20161231 2100 4.198906 11371.0 20161231 2100 0.995571 131.0
8781 20161231 2200 4.787433 19083.0 20161231 2200 1.029809 NaN
8782 20161231 2300 3.987506 9354.0 20161231 2300 0.900942 NaN
8783 20170101 0 3.284947 1815.0 20170101 0 0.899262 NaN

我需要开始的日期和时间后移一小时,所以开始时间是小时开始而不是小时结束 -
          0    1         2         3         4    5         6       7  
0 20160101 000 7.977169 109404.0 20160101 100 4.028678 814.0
1 20160101 100 8.420204 128546.0 20160101 200 4.673662 2152.0
2 20160101 200 9.515370 165931.0 20160101 300 8.019863 8100.0

并以下面的日期和时间结束 -
             0     1         2        3         4     5         6      7  
8780 20161231 2000 4.198906 11371.0 20161231 2100 0.995571 131.0
8781 20161231 2100 4.787433 19083.0 20161231 2200 1.029809 NaN
8782 20161231 2200 3.987506 9354.0 20161231 2300 0.900942 NaN
8783 20161231 2300 3.284947 1815.0 20170101 0 0.899262 NaN

而且,我不知道如何实现这一点或如何研究它。谢谢,

最佳答案

最好创建一个适当的日期时间对象,然后简单地将小时数作为总和删除,以处理任何以天为单位的修订。然后我们可以使用 dt.strftime重新创建您的对象(字符串)列。

s = pd.to_datetime(
df[0].astype(str) + df[1].astype(str).str.zfill(4), format="%Y%m%d%H%M"
)

0 2016-01-01 01:00:00
1 2016-01-01 02:00:00
2 2016-01-01 03:00:00
8780 2016-12-31 21:00:00
8781 2016-12-31 22:00:00
8782 2016-12-31 23:00:00
8783 2017-01-01 00:00:00
dtype: datetime64[ns]

df[1] = (s - pd.DateOffset(hours=1)).dt.strftime("%H%M").str.lstrip("0").str.zfill(3)
df[0] = (s - pd.DateOffset(hours=1)).dt.strftime("%Y%d%m")

print(df)

0 1 2 3 4 5 6 7
0 20160101 000 7.977169 109404.0 20160101 100 4.028678 814.0
1 20160101 100 8.420204 128546.0 20160101 200 4.673662 2152.0
2 20160101 200 9.515370 165931.0 20160101 300 8.019863 8100.0
8780 20163112 2000 4.198906 11371.0 20161231 2100 0.995571 131.0
8781 20163112 2100 4.787433 19083.0 20161231 2200 1.029809 NaN
8782 20163112 2200 3.987506 9354.0 20161231 2300 0.900942 NaN
8783 20163112 2300 3.284947 1815.0 20170101 0 0.899262 NaN

关于Pandas 将日期时间列向后移动一小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62472689/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com