gpt4 book ai didi

python Pandas : Reindex DataFrame after Timezone conversion

转载 作者:太空宇宙 更新时间:2023-11-03 15:58:45 26 4
gpt4 key购买 nike

让我们考虑以下跨越 1 月 16 日上午 10 点到下午 4 点的 DataFrame:

date_range1 = pd.date_range(dt(2017,1,16,10), dt(2017,1,16, 20), freq='2H')
df = pd.DataFrame(data = np.random.rand(len(date_range1),2), index = date_range1)

我用一个稍微长一点的 DateTimeindex 重新索引它,跨越 0am 到 11pm 并获得了想要的结果,NaN 填充了 0-10am 和 4-11pm 之间没有数据的时间范围:

date_range2 = pd.date_range(dt(2017,1,16,0), dt(2017,1,16, 23), freq='2H')
df.reindex(date_range2)

enter image description here

但是,如果我先修改 df 的时区,然后执行相同的重新索引操作会产生一个完全充满 NaN 值的 DataFrame:

df = df.tz_localize("Europe/Helsinki").tz_convert('UTC')  
df.reindex(date_range2)

enter image description here

有人知道这里发生了什么吗?

最佳答案

修复:

一种解决方法是在使用 tz_convert(None) 以便将它们的差异(此处为 UTC+02:00)添加到生成的时间戳中。

然后,这些将正确地重建索引。

np.random.seed(42)
df1 = df.tz_localize("Europe/Helsinki").tz_convert('UTC').tz_localize(None)
df1.reindex(date_range2)

enter image description here


正确的方法:

默认情况下,pd.date_range 中的 tz 关键字参数是 None 而不是 "UTC"。我们需要相应地更改它,因为通过比较它们的 UTC 时间戳来重新索引:

date_range2.tz = 'UTC'
df1 = df.tz_localize("Europe/Helsinki").tz_convert('UTC')
df1.reindex(date_range2)

enter image description here

关于 python Pandas : Reindex DataFrame after Timezone conversion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41715376/

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