我如何将int64转换为时间戳

时间:2017-04-22 18:09:41

标签: python timestamp

import pandas as pd
import urllib
from pandas import DataFrame, Series
import datetime

url = 'https://chartapi.finance.yahoo.com/instrument/1.0/GOOG/chartdata;type=quote;range=10d/csv'
urllib.request.urlretrieve(url, './data/goog.csv')
GOOG= DataFrame(pd.read_csv("goog.csv"))

 GOOG['Timestamp']= datetime.datetime.fromtimestamp(GOOG['Timestamp']).strptime('%Y-%m-%d :%H:%M:%S)

在此代码中,我能够从yahoo finance下载日内数据,然后保存到csvfile。但是,日期是dtype = int64,我无法将其转换为时间戳。我不知道为什么我不能这样做。

2 个答案:

答案 0 :(得分:1)

1 - csv格式不正确,无法导入pandas
2 - 我们需要使用timestampto_datetime作为参数将unit="s"转换为日期时间。

这是一个有效的例子:

import requests
import re
import pandas as pd
from io import BytesIO

symbol = "GOOG"
days = 10

url = 'https://chartapi.finance.yahoo.com/instrument/1.0/{}/chartdata;type=quote;range={}d/csv'.format(symbol, days)
csv = requests.get(url).text
headers = re.findall(r"values:(.*?)\s+", csv, re.IGNORECASE)[0]
csv = re.sub(r".*volume:.*?\s", "", csv, 0, re.IGNORECASE | re.DOTALL)
csv = "{}\n{}".format(headers,csv)
GOOG = pd.read_csv(BytesIO(csv), sep=",")
GOOG['Timestamp'] = pd.to_datetime(GOOG['Timestamp'], unit="s")

答案 1 :(得分:0)

如果时间戳是Unix时间,那么只需使用:

如果是Unix时间:

pd.to_datetime(timestamp, unit='s')

或者在纳秒时间的情况下Unix时间:

pd.to_datetime(timestamp, unit='ns')

结果:

GOOG['Timestamp'] = pd.to_datetime(GOOG['Timestamp'], unit='s')