使用pandas.io.sql.read_frame,我可以像在read_csv中那样使用parse_dates吗?

时间:2013-03-05 18:44:41

标签: python sql datetime pandas

我正在使用data_frame直接从数据库中读取pandas.io.sql.read_frame

cnx = pandas.io.sql.connect(host='srv',user='me',password='pw',database='db')
df = pandas.io.sql.read_frame('sql_query',cnx)

它可以很好地检索数据。但我想将其中一列解析为datetime64,类似于从CSV文件中读取时可以执行的操作,例如:

df2 = pandas.io.read_csv(csv_file, parse_dates=[0])

parse_dates没有read_frame标志。建议采用哪种替代方法?

同样的问题适用于read_csv中的index_col,它指示哪个col。应该是索引。是否有推荐的方法来使用read_frame执行此操作?

3 个答案:

答案 0 :(得分:1)

这个问题现在很老了。大熊猫0.10也很老了。 在最新版本的pandas 0.16中,read_frame方法已被描述为有利于read_sql。 即便如此,文档说就像read_csv函数一样,需要一个parse_dates参数Pandas 0.16 read_frame

似乎parse_dates参数出现在0.14中,同时read_frame被删除。 read_sql函数似乎是read_frame的重命名,因此只需将您的pandas版本更新为0.14或更高版本并重命名您的函数将允许您访问此参数。 以下是read_sql函数的文档:Pandas 0.16 read_sql

答案 1 :(得分:0)

df = pandas.io.sql.read_frame('sql_query', index=['date_column_name'], con=cnx)

其中date_column_name是数据库中包含日期元素的列的名称。 sql_query的格式应为select date_column_name, data_column_name from ...

Pandas(自0.13+起)将自动将其解析为日期格式,如果它类似于日期字符串。

In [34]: df.index
Out[34]: 
    <class 'pandas.tseries.index.DatetimeIndex'>

答案 2 :(得分:0)

data_frame["column"] = pandas.to_datetime(data_frame["column"])

默认情况下可以正常工作,但如果没有,您可以指定选项。请参阅doc