我从API中提取财务数据并尝试将其放入可读的数据框中。但是,日期是以某种ISO 8601格式编码的,我无法说明它们是什么。在StackOverflow上尝试了很多不同的东西,但我无法弄明白。非常感谢帮助。日期应该在第0列。
data = get.foo()
df = pd.DataFrame(data)
print(df.tail())
0 1 2 3 4 5
295 1520942700 174.10 174.62 174.33 174.50 169.447085
296 1520942640 174.23 174.46 174.23 174.46 25.634600
297 1520942580 173.56 174.60 173.56 174.52 298.726679
298 1520942520 173.50 174.11 174.11 173.55 672.756311
299 1520942460 174.11 174.81 174.80 174.11 441.636742
我也不确定如何将列顶部的[0,1,2,3,4,5]从数字更改为[时间,低,高,开,关,音量]
谢谢!
答案 0 :(得分:2)
第0列具有UNIX时间戳,即1970年1月1日午夜以来的秒数,可能是UTC时区。见这里:Converting unix timestamp string to readable date in Python
答案 1 :(得分:1)
您的时间不是https://en.wikipedia.org/wiki/ISO_8601。
您可以在创建数据框时提供标题,并将转换应用于时间列:
import pandas as pd
import datetime
data = [[ 1520942700, 174.10, 174.62, 174.33, 174.50, 169.447085],
[ 1520942640, 174.23, 174.46, 174.23, 174.46, 25.634600],
[ 1520942580, 173.56, 174.60, 173.56, 174.52, 298.726679],
[ 1520942520, 173.50, 174.11, 174.11, 173.55, 672.756311],
[ 1520942460, 174.11, 174.81, 174.80, 174.11, 441.636742]]
# create with headers
df = pd.DataFrame(data,None, ['time', 'low', 'high', 'open', 'close', 'volume'])
# convert to datetime (adapted from https://stackoverflow.com/a/26763810/7505395)
df['time'] = df['time'].apply(lambda x:datetime.datetime.fromtimestamp(x))
print(df)
输出:
time low high open close volume
0 2018-03-13 13:05:00 174.10 174.62 174.33 174.50 169.447085
1 2018-03-13 13:04:00 174.23 174.46 174.23 174.46 25.634600
2 2018-03-13 13:03:00 173.56 174.60 173.56 174.52 298.726679
3 2018-03-13 13:02:00 173.50 174.11 174.11 173.55 672.756311
4 2018-03-13 13:01:00 174.11 174.81 174.80 174.11 441.636742
答案 2 :(得分:1)
肯定不是ISO-8601。 我的猜测是:Unix Epoch格式(=自1970-01-01 00:00:00 UTC以来的秒数)。 这是我将其转换为可读格式时得到的结果:
$ date --date='@1520942700'
di 13 mrt 2018 13:05:00 CET
$ date --date='@1520942640'
di 13 mrt 2018 13:04:00 CET
$ date --date='@1520942580'
di 13 mrt 2018 13:03:00 CET
$ date --date='@1520942460'
di 13 mrt 2018 13:01:00 CET