Python 创建新列并将其添加到sql数据库
我正在尝试将数据库中的所有时间戳从unixtime转换为格式化的、人类可读的时间。格式化后,它应该创建一个名为Python 创建新列并将其添加到sql数据库,python,sql,pandas,Python,Sql,Pandas,我正在尝试将数据库中的所有时间戳从unixtime转换为格式化的、人类可读的时间。格式化后,它应该创建一个名为formatted\u 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('
formatted\u 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()
代码正确地转换为正确的格式,但在df中的x的循环中出现故障,我试图创建新列并将其添加到数据库中。我得到的错误是:
TypeError:(“'Series'对象不可调用”,“在索引unixtime'发生”)
如果您有任何帮助,我们将不胜感激。您不需要将数据拉入pandas中,以便将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'