【发布时间】:2018-07-07 00:42:57
【问题描述】:
我有一个数据框,其中一列填充了毫秒,我已经能够将其转换为日期时间格式。问题是,对于两年的数据,从 2017 年到 2018 年,时间输出保持在 1970 年 1 月 1 日。输出日期时间如下所示:
27 1970-01-01 00:25:04.232399999
28 1970-01-01 00:25:04.232699999
29 1970-01-01 00:25:04.232999999
...
85264 1970-01-01 00:25:29.962799999
85265 1970-01-01 00:25:29.963099999
85266 1970-01-01 00:25:29.963399999
在我看来,从 1504224299999 开始到 1529971499999 结束的毫秒数被添加到纪元的第 10 个小时,并不代表它应该代表的真实范围。
这是我目前的代码......
import pandas as pd
import MySQLdb
import datetime
from pandas import DataFrame
con = MySQLdb.connect(host='localhost',user='root',db='binance',passwd='abcde')
cur = con.cursor()
ms = pd.read_sql('SELECT close_time FROM btcusdt', con=con)
ms['close_time'].apply( lambda x: datetime.datetime.fromtimestamp(x/1000) )
date = pd.to_datetime(ms['close_time'])
print(date)
我不太确定我哪里出错了,所以如果有人能告诉我我在做什么愚蠢的事情,我将不胜感激。
【问题讨论】:
-
尝试:
ms['close_time'].apply( lambda x: datetime.datetime.fromtimestamp(x/1000) )ms['close_time']的 dtype 是什么?? -
@Mankind_008,它仍然显示 float64, dtype: object & 输出相同的错误
-
@Mankind_008,所以我在使用您的初始代码建议之前添加了这一点,现在我遇到了错误:TypeError: unsupported operand type(s) for /: 'Timestamp' and 'int'跨度>
-
从
ms['close_time']发布一些虚拟数据 -
@Mankind_008,这是来自数据框,为了可读性添加了逗号:0 1.504224e+12, 1 1.504225e+12, 2 1.504225e+12, 3 1.504225e+12, 4 1.504225e +12, 5 1.504226e+12, 6 1.504226e+12, 7 1.504226e+12
标签: python pandas dataframe types time-series