【问题标题】:pandas, pytz - simple timezone convertpandas, pytz - 简单的时区转换
【发布时间】:2017-05-13 01:30:15
【问题描述】:

我有以下字典:

{'actual': {Timestamp('2013-02-20 13:30:00'): 0.93000000000000005}}

我把它改成df:

df= pd.DataFrame.from_dict(dict, orient='columns', dtype=None)

如果我执行:

df.index = df.index.tz_localize('US/Eastern').tz_convert(pytz.utc)

df时间戳正确转换并返回:

                           actual
2013-02-20 18:30:00+00:00    0.93

但是,如果我将命令分成两行,例如:

df.index= df.index.tz_localize('US/Eastern')
df.index.tz_convert(pytz.utc)

它不会被转换并返回:

                           actual
2013-02-20 13:30:00-05:00    0.93

有人知道为什么吗?

【问题讨论】:

  • @Lightness Races in Orbit:嗨,是的,将其添加到标签中

标签: python pandas pytz


【解决方案1】:

您只需在第二行将索引分配回df

import pytz
df.index = df.index.tz_localize('US/Eastern')
df.index = df.index.tz_convert(pytz.utc)

df
#                         actual
#2013-02-20 18:30:00+00:00  0.93

【讨论】:

  • 嗯,好吧 - 我对 Pandas 很陌生,但我想说这不是属性修改的标准行为吗?
  • 这其实是一种比较标准的属性修改方式。由于在 pandas 中,大多数函数都是函数式的,即它们不会就地修改对象,除非明确告知这样做。
  • 好的,我现在明白了。谢谢,非常有用。
猜你喜欢
  • 2020-01-30
  • 2018-01-03
  • 2016-02-05
  • 2015-06-13
  • 2015-12-09
  • 2011-07-02
  • 2012-08-29
  • 2015-10-05
  • 2015-02-16
相关资源
最近更新 更多