当前位置: 首页 > 面试题库 >

Pandas更改外汇DataFrame的时区

杜砚
2023-03-14
问题内容

我们如何在Pandas DataFrame中更改时区?

我编写了一些简单的代码来读取1分钟EURUSD数据(DateTime / Open / High / Low / Close / Vol)。样本数据位于EST时区,我需要将其转换为UTC。

df.tz_convert(pytz.timezone('UTC'))

失败了。有错误

TypeError:无法转换tz天真时间戳,使用tz_localize进行本地化

来自DAT_ASCII_EURUSD_M1_SmallSample.csv文件的样本数据:

20160103 170000; 1.087010; 1.087130; 1.087010; 1.087130; 0 20160103 170100; 1.087120; 1.087120; 1.087120; 1.087120; 0 20160103 170200; 1.087080; 1.087220; 1.087080; 1.087220; 0 20160104 000100; 1.087830; 1.087840; 1.087640; 1.087640; 0 20160104 000200 ; 1.087640; 1.088220; 1.087640; 1.088220; 0 20160104 000300; 1.088220; 1.088220; 1.088040; 1.088050; 0 20160105 000000; 1.082270; 1.082270; 1.082160; 1.082160; 0 20160105 000100; 1.082160; 1.082160; 1.082130; 1.082140; 0 20160105 000200; 1.082150 ; 1.082240; 1.082150; 1.082240; 0

import pandas as pd
import pytz

filename = "DAT_ASCII_EURUSD_M1_SmallSample.csv"

df = pd.read_csv(filename, sep=";", names=['DateTime','Open','High','Low','Close','Vol'],
                 parse_dates = [0], index_col = 'DateTime')

df.tz_localize(pytz.timezone('US/Eastern'))
df.tz_convert(pytz.timezone('UTC'))

print(df)

问题答案:

您应该使用:

df = df.tz_localize(pytz.timezone('US/Eastern'))
df = df.tz_convert(pytz.timezone('UTC'))

因为tz_localize这不是就地操作,而是返回一个新的DataFrame。



 类似资料:
  • 问题内容: 我的问题是,将一行添加到DataFrame会更改列的dtype: 我将dtype特别指定为int32(即’i4’),可以看出: 但是,添加一行会将dtype更改为float64: 我尝试指定添加的值的dtype: 但这也不起作用。有没有不使用返回新对象的函数的解决方案? 问题答案: 放大分为两个阶段,首先将a放在该列中,然后将其分配,这就是为什么要强制它的原因。我将其放在错误/增强列表

  • 本文向大家介绍如何更改 pandas dataframe 中两列的位置,包括了如何更改 pandas dataframe 中两列的位置的使用技巧和注意事项,需要的朋友参考一下 如何更改 pandas dataframe 中两列的位置: 把其中的某列移到第一列的位置。 原来的 df 是: 要将 Mid 这一列移动到第一列? 解决办法:(使用 ix ) 法一: 法二: 最终的处理结果: 以上这篇如何更

  • 我试图改变列或处理列,我得到一些keyError错误。致力于芝加哥犯罪数据分析。 例如,当我试图跑步时 关键错误 完整代码: 这就是错误: 2896尝试:- pandas/_libs/index.pyx在pandas中。_libs.index.IndexEngine.get_loc() pandas/_libs/index.pyx在pandas中。_libs.index.IndexEngine.g

  • 本文向大家介绍pandas修改DataFrame列名的方法,包括了pandas修改DataFrame列名的方法的使用技巧和注意事项,需要的朋友参考一下 在做数据挖掘的时候,想改一个DataFrame的column名称,所以就查了一下,总结如下: 数据如下: 方法一:暴力方法 但是缺点是必须写三个,要不报错。 方法二:较好的方法 好处是可以随意改个数: 可以只改变'A','C',不改变'B'。 以上

  • 问题内容: 假设我有以下DataFrame: 这按预期工作: 但这不是: 为什么?我如何在不必写两行的情况下实现“苹果”和“香蕉”值的转换 问题答案: 您应该使用loc, 而无需链接 : 请参阅有关 返回视图与副本的文档,如果将链接分配给副本(并丢弃),但是如果将它分配给一个位置,则大熊猫会聪明地意识到您想要分配给原始副本。

  • 本文向大家介绍Python-在Pandas DataFrame中更改列名和行索引,包括了Python-在Pandas DataFrame中更改列名和行索引的使用技巧和注意事项,需要的朋友参考一下 Pandas是一个python库,提供了许多数据分析功能,而这些功能在python标准库中是不可用的。一种这样的功能是使用数据帧。它们是代表列和行的矩形网格。在创建数据框时,我们确定列的名称,并在随后的数