大熊猫日光变换值

时间:2014-04-02 20:33:56

标签: python datetime pandas

我寻找下降/添加对应于日光的小时。我处理如下,但我只获得日期时间的转变,因为也想要转移价值。

任何人都有解决方案吗?

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可以是任何值。

1 个答案:

答案 0 :(得分:0)

这里是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

以下代码:     我= 8730     start = pd.datetime(2014,1,1,0,0)     df = pd.DataFrame({&#39; value&#39;:range(i)},index = pd.date_range(start,freq =&#39; H&#39;,periods = i))     df = df.tz_localize(&#39; Etc / GMT-1&#39;)     dfParis = df.tz_convert(pytz.timezone(&#39; Europe / Paris&#39;))

这里的值1到8730必须被视为真实生活中的其他值。

有人有解决方案吗?