python - pandas 创建新列并将其添加到 sql 数据库

标签 python sql pandas

我正在尝试将我数据库中的所有时间戳从 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/

相关文章:

Python (UNIX) 套接字——读取所有数据

python - 使用 Python 从检查元素中获取代码

python - opencv python中的椭圆检测

python - 所有可能的组合作为基于主列的数据帧的新列

python - 来自 Groupby Python 的多列数据透视表

python - Pandas 对字符串 isin 列表的负选择给出了错误的结果

Python 归约和元组

SQL Server 连接问题

mysql - 查询可以在没有 WHERE 的情况下工作,但在使用它的情况下工作,而不是 - 第 2 行中的 "LIMIT 0, 25'”

mysql - 左连接,每个左条目只有 1 行