gpt4 book ai didi

python - Pandas 数据帧中的日期解析和时区调整

转载 作者:行者123 更新时间:2023-11-28 17:36:18 24 4
gpt4 key购买 nike

我在一个数据框中有大约 800,000 行数据,其中一列数据 df['Date'] 是时间和日期的字符串 'YYYY-MM-DD HH:MM:SS.fff',它没有时区信息。但是我知道他们在纽约时区,他们需要转换成 CET。现在我有两种方法来完成工作:

方法一(肯定很慢):

df['Date'].apply(lambda x: timezone('America/New_York')\
.localize(datetime.datetime.strptime(x,'%Y%m%d%H:%M:%S.%f'))\
.astimezone(timezone('CET')))

方法二:

df.index = pd.to_datetime(df['Date'],format='%Y%m%d%H:%M:%S.%f')
df.index.tz_localize('America/New_York').tz_convert('CET')

我只是想知道是否有其他更好的方法来做到这一点?或我列出的方法的任何潜在缺陷?谢谢!

此外,我想将所有时间戳移动固定的时间量,例如 1ms timedelta(0,0,1000),我该如何实现它使用方法2?

最佳答案

方法 2 无疑是执行此操作的最佳方法。

但是,我发现您是在加载数据后格式化此日期。

加载文件时解析日期比加载文件后更改日期要快得多。 (更不用说清洁工了)

如果您的数据是使用 pandas.read_csv() 从 csv 文件加载的例如函数,那么您可以使用 parse_dates= 选项和 date_parser= 选项。

您可以直接使用您的 lambda 函数作为 date_parser= 进行尝试并将 parse_dates= 设置为您的日期列列表。

像这样:

pd.read_csv('myfile.csv', parse_dates=['Date'] date_parser=lambda x: timezone('America/New_York')\
.localize(datetime.datetime.strptime(x,'%Y%m%d%H:%M:%S.%f'))\
.astimezone(timezone('CET')))

应该可以工作并且可能是最快的。

关于python - Pandas 数据帧中的日期解析和时区调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30228082/

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