我正在尝试将我数据库中的所有时间戳从 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
循环中出现故障。我得到的错误是:
TypeError: ("'Series' object is not callable", 'occurred at index unixtime')
如有任何帮助,我们将不胜感激。
最佳答案
您不需要将数据拉入 pandas 以将 unix 时间转换为时间戳,如 sqlite似乎支持日期字符串转换:
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'
关于python - pandas 创建新列并将其添加到 sql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44709257/