【问题标题】:pandas daylight shifting values熊猫日光偏移值
【发布时间】:2014-04-02 20:33:55
【问题描述】:

我寻找与日光相对应的小时数。我处理如下,但我只获得日期时间的转变,因为我也想要值的转变。

谁有解决方案?

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

【问题讨论】:

  • 您可以删除时区并减去第一个索引。但是value是什么意思呢?
  • 如果您每天的用电高峰在夏季时间是 19 小时,那么在冬季时间也是如此。没有转移!没看懂你的方法? :s

标签: python datetime pandas


【解决方案1】:

在 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 开始 = pd.datetime(2014,1,1, 0, 0) df = pd.DataFrame({'value' : range(i)}, index=pd.date_range(start, freq='H', period=i)) df = df.tz_localize('Etc/GMT-1') dfParis = df.tz_convert(pytz.timezone('Europe/Paris'))

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

有人有解决办法吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多