在大熊猫中使用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'
]
)
答案 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]
。