Python Pandas:在时区转换后重新索引DataFrame
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python Pandas:在时区转换后重新索引DataFrame,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1217字,纯文字阅读大概需要2分钟。
内容图文
![Python Pandas:在时区转换后重新索引DataFrame](/upload/InfoBanner/zyjiaocheng/667/d03e5b77d94a4ee58a90ebd714f982bc.jpg)
让我们考虑以下数据帧,该数据帧跨度为1月16日上午10点至下午4点.
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)
但是,如果我先修改df的时区,然后执行相同的重新索引操作,则会产生一个完全用NaNs值填充的DataFrame:
df = df.tz_localize("Europe/Helsinki").tz_convert('UTC')
df.reindex(date_range2)
有人知道这里发生了什么吗?
解决方法:
固定:
一种解决方法是,在使用tz_convert(None)转换为UTC时间后,从时区感知(tz)DateTimeIndex中删除时区信息,以便将它们之间的差异(此处为UTC 02:00)添加到生成的时间戳中.
然后,这些将正确地重新编制索引.
np.random.seed(42)
df1 = df.tz_localize("Europe/Helsinki").tz_convert('UTC').tz_localize(None)
df1.reindex(date_range2)
正确的方法:
默认情况下,pd.date_range中的tz关键字参数为None而不是“ UTC”.我们需要相应地更改此值,因为在重新编制索引的下方,通过比较其UTC时间戳记来进行:
date_range2.tz = 'UTC'
df1 = df.tz_localize("Europe/Helsinki").tz_convert('UTC')
df1.reindex(date_range2)
内容总结
以上是互联网集市为您收集整理的Python Pandas:在时区转换后重新索引DataFrame全部内容,希望文章能够帮你解决Python Pandas:在时区转换后重新索引DataFrame所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。