gpt4 book ai didi

python - Pandas to_datetime 显示时间不正确

转载 作者:太空宇宙 更新时间:2023-11-03 18:48:35 24 4
gpt4 key购买 nike

我使用 pandas to_datetime 来格式化 DataFrame 的时间戳,如下所示:

import pandas as pd
from pandas import *

d = {'TIMESTAMP' : Series([1294311545, 1294317813, 1294318449]),
'PRICE' : Series([24990, 25499, 25499]),
'VOLUME' : Series([1500000000, 5000000000, 100000000])}
df = DataFrame(d)
print df
df.TIMESTAMP = pd.to_datetime(df.TIMESTAMP, unit='s')
df.set_index('TIMESTAMP', inplace=True)
print df
test = df['VOLUME'].resample('H', how='sum')
print test
test2= df['PRICE'].resample('H', how='ohlc')
print test2

输出1是:

   PRICE   TIMESTAMP      VOLUME
0 24990 1294311545 1500000000
1 25499 1294317813 5000000000
2 25499 1294318449 100000000
PRICE VOLUME
TIMESTAMP
2011-01-06 10:59:05 24990 1500000000
2011-01-06 12:43:33 25499 5000000000
2011-01-06 12:54:09 25499 100000000

我第二次使用 python datetime 打印出上面 DataFrame 中的时间戳:

import datetime
print(datetime.datetime.fromtimestamp(int("1294311545")).strftime('%Y-%m-%d %H:%M:%S'))
print(datetime.datetime.fromtimestamp(int("1294317813")).strftime('%Y-%m-%d %H:%M:%S'))
print(datetime.datetime.fromtimestamp(int("1294318449")).strftime('%Y-%m-%d %H:%M:%S'))

输出2是:

2011-01-06 02:59:05
2011-01-06 04:43:33
2011-01-06 04:54:09

你会发现output1和ouput2是不同的!这是时区问题吗?我需要输出 1 应该与输出 2 相同。又该如何解决呢?

最佳答案

fromtimestamp 本地化时间,如果没有提供 tz,您可以使用 utcfromtimestamp 来获取 pandas 的功能(此处未本地化)

In [22]: df.index[0]
Out[22]: Timestamp('2011-01-06 10:59:05', tz=None)

In [24]: datetime.datetime.utcfromtimestamp(int("1294311545")).strftime('%Y-%m-%d %H:%M:%S')
Out[24]: '2011-01-06 10:59:05'

In [25]: datetime.datetime.fromtimestamp(int("1294311545")).strftime('%Y-%m-%d %H:%M:%S')
Out[25]: '2011-01-06 05:59:05'

如果你想本地化 tz,你可以这样做

In [59]: df.index = df.index.tz_localize('Asia/Shanghai').tz_convert('UTC')

In [60]: df
Out[60]:
PRICE VOLUME
TIMESTAMP
2011-01-06 02:59:05+00:00 24990 1500000000
2011-01-06 04:43:33+00:00 25499 5000000000
2011-01-06 04:54:09+00:00 25499 100000000

关于python - Pandas to_datetime 显示时间不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18893893/

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