我寻找下降/添加对应于日光的小时。我按如下方式处理,但我只获得日期时间的移位,因为还想要值的移位。
有人有解决方案吗?
df = pd.DataFrame({'value' : range(10)}, index=pd.date_range(pd.datetime(2014,3,30, 0, 0), freq='H', periods=10))
df = df.tz_localize(pytz.timezone('UCT'))
dfP = df.tz_convert(pytz.timezone('Europe/Paris'))
>>> df
value
2014-03-30 00:00:00+00:00 a
2014-03-30 01:00:00+00:00 b
2014-03-30 02:00:00+00:00 c
2014-03-30 03:00:00+00:00 d
2014-03-30 04:00:00+00:00 e
2014-03-30 05:00:00+00:00 f
2014-03-30 06:00:00+00:00 g
2014-03-30 07:00:00+00:00 h
2014-03-30 08:00:00+00:00 i
2014-03-30 09:00:00+00:00 j
[10 rows x 1 columns]
>>> dfP
value
2014-03-30 01:00:00+01:00 a
2014-03-30 03:00:00+02:00 b
2014-03-30 04:00:00+02:00 c
2014-03-30 05:00:00+02:00 d
2014-03-30 06:00:00+02:00 e
2014-03-30 07:00:00+02:00 f
2014-03-30 08:00:00+02:00 g
2014-03-30 09:00:00+02:00 h
2014-03-30 10:00:00+02:00 i
2014-03-30 11:00:00+02:00 j
[10 rows x 1 columns]
我想要dfP是:(而不是上面)
>>> dfP
value
2014-03-30 01:00:00+01:00 a
2014-03-30 03:00:00+02:00 c
2014-03-30 04:00:00+02:00 d
2014-03-30 05:00:00+02:00 e
2014-03-30 06:00:00+02:00 f
2014-03-30 07:00:00+02:00 g
2014-03-30 08:00:00+02:00 h
2014-03-30 09:00:00+02:00 i
2014-03-30 10:00:00+02:00 j
2014-03-30 11:00:00+02:00 Nan
其中 a,b,c,d,e,f,g,h,i,j 可以是任何值。
在 value2 中,我需要的结果。
value value2
2014-01-01 00:00:00+01:00 0 0
…
2014-03-29 22:00:00+01:00 2110 2110
2014-03-29 23:00:00+01:00 2111 2111
2014-03-30 00:00:00+01:00 2112 2112
2014-03-30 01:00:00+01:00 2113 2113
2014-03-30 03:00:00+02:00 2114 2115
2014-03-30 04:00:00+02:00 2115 2116 <- shift + 1
…
2014-10-25 19:00:00+02:00 7146 7147
2014-10-25 20:00:00+02:00 7147 7148
2014-10-25 21:00:00+02:00 7148 7149
2014-10-25 22:00:00+02:00 7149 7150
2014-10-25 23:00:00+02:00 7150 7151
2014-10-26 00:00:00+02:00 7151 7152
2014-10-26 01:00:00+02:00 7152 7153
2014-10-26 02:00:00+02:00 7153 7154
2014-10-26 02:00:00+01:00 7154 7154 <- shift - 1
2014-10-26 03:00:00+01:00 7155 7155
2014-10-26 04:00:00+01:00 7156 7156
使用以下代码: i = 8730 start = pd.datetime(2014,1,1, 0, 0) df = pd。DataFrame({'value' : range(i)}, index=pd.date_range(start, freq='H', periods=i)) df = df.tz_localize('Etc/GMT-1') dfParis = df.tz_convert(pytz.timezone('Europe/Paris'))
此处的值 1 到 8730 必须被视为现实生活中的其他值。
有人有解决方案吗?