我正在尝试将我的数据库中的所有时间戳从unixtime转换为格式化的,人类可读的时间。格式化之后,它应该创建一个名为formatted_date
的新列,然后将该列写回我连接的SQL数据库。
以下是代码:
import pandas as pd
import numpy as np
import statsmodels.api as sm
from patsy import dmatrices
import sqlite3
import datetime
con = sqlite3.connect('file_name')
df = pd.read_sql_query('SELECT * FROM table', con, chunksize=1000)
def format_date(x):
format_date = x.unixtime = pd.to_datetime(x.unixtime, unit='s')
return format_date
for x in df:
x['formatted_date'] = x.apply(format_date(x)).tosql('bitcoin', con, if_exists='append')
con.close()
代码正确转换为正确的格式,但在for x in df
循环期间发生故障,我尝试创建新列并将其添加到db。我得到的错误是:
TypeError :("'系列'对象不可调用",'发生在索引unixtime')
任何帮助都将不胜感激。
答案 0 :(得分:0)
由于sqlite似乎支持日期字符串转换,因此您无需将数据提取到熊猫即可将Unix时间转换为时间戳:
Compute the date and time given a unix timestamp 1092941466, and compensate for your local timezone.
SELECT datetime(1092941466, 'unixepoch', 'localtime');
但是,如果仍然需要,您可以将unix时间戳转换为日期字符串,如下所示:
import datetime
unix_ts = 1546732800.0
dt = datetime.datetime.fromtimestamp(unix_ts)
datetime.datetime.strftime(dt, '%Y-%m-%d')
'2019-01-05'