将 unix 时间戳从纪元转换为数据帧中的日期
Convert unix time stamp since epoch to date in dataframe
我正在从 API 中提取财务数据并尝试将其放入可读的数据框中。然而,日期是以某种 ISO 8601 格式编码的,我无法分辨它们是什么。在 Whosebug 上尝试了很多不同的东西,但我无法弄清楚。帮助将不胜感激。日期应该在第 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] 从数字更改为 [time, low, high, open, close, volume] .
谢谢!
第 0 列具有 UNIX 时间戳,即自 1970 年 1 月 1 日午夜以来的秒数,可能采用 UTC 时区。看这里:Converting unix timestamp string to readable date in Python
你的时代不是https://en.wikipedia.org/wiki/ISO_8601。
您可以在创建数据框时提供 header 并对您的时间列应用转换:
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://whosebug.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
肯定不是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
我正在从 API 中提取财务数据并尝试将其放入可读的数据框中。然而,日期是以某种 ISO 8601 格式编码的,我无法分辨它们是什么。在 Whosebug 上尝试了很多不同的东西,但我无法弄清楚。帮助将不胜感激。日期应该在第 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] 从数字更改为 [time, low, high, open, close, volume] .
谢谢!
第 0 列具有 UNIX 时间戳,即自 1970 年 1 月 1 日午夜以来的秒数,可能采用 UTC 时区。看这里:Converting unix timestamp string to readable date in Python
你的时代不是https://en.wikipedia.org/wiki/ISO_8601。
您可以在创建数据框时提供 header 并对您的时间列应用转换:
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://whosebug.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
肯定不是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