识别熊猫read_sql中的日期类型

时间:2020-10-03 00:16:42

标签: python sql-server python-3.x pandas

在大熊猫中使用read_sql时,该功能要求确定应将哪些列视为日期(请参见下面的代码段)。但是我事先不知道什么列是日期。

给出一个select语句,我需要检索其列类型并将结果集加载到pandas数据框中。我期望熊猫能够在从选择中创建数据框时识别date类型的列并分配类型。

在select语句或数据框中标识日期类型的最佳方法是什么?我试图避免使用pyodbc来运行语句来检测类型。

import pyodbc
import pandas as pd 

conn = pyodbc.connect....

sql_df = pd.read_sql(
    "SELECT * FROM my_table",
    conn,
    parse_dates=[
        'created_at',
        'updated_at'
    ]
)

2 个答案:

答案 0 :(得分:0)

咨询sql_df.dtypes。 RDBMS视图将哪些列作为时间戳记将很清楚。

例如,在查询postgres后端时, 您可能会发现以下类型:

[1024 rows x 2 columns]
created    datetime64[ns]
name               object

使用从日期到时间戳的postgres转换可能会有所帮助:

SELECT created::TIMESTAMP, ... FROM ...

如果要查询存储的关系 时间信息为VARCHAR, 会有一点痛苦。 您真的想将时间数据存储在合适的列类型中。

您可能会发现sqlserver类型转换很有帮助,例如:

SELECT CAST (created AS datetime), ... FROM ...

答案 1 :(得分:0)

如果将pyodbc与MS SQL Server和熊猫一起使用,以标识df.dtypes类型的日期,则需要在SQL Server中将列定义为datetime,在ds.dtypes中将定义得到datetime64[ns]