我正在使用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执行此操作?
答案 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。