鉴于:
CREATE PROCEDURE my_procedure
@Param INT
AS
SELECT Col1, Col2
FROM Table
WHERE Col2 = @Param
Run Code Online (Sandbox Code Playgroud)
我希望能够将其用作:
import pandas as pd
import pyodbc
query = 'EXEC my_procedure @Param = {0}'.format(my_param)
conn = pyodbc.connect(my_connection_string)
df = pd.read_sql(query, conn)
Run Code Online (Sandbox Code Playgroud)
但这会引发错误:
ValueError: Reading a table with read_sql is not supported for a DBAPI2 connection. Use an SQLAlchemy engine or specify an sql query
Run Code Online (Sandbox Code Playgroud)
SQLAlchemy也不起作用:
import sqlalchemy
engine = sqlalchemy.create_engine(my_connection_string)
df = pd.read_sql(query, engine)
Run Code Online (Sandbox Code Playgroud)
抛出:
ValueError: Could not init table 'my_procedure'
Run Code Online (Sandbox Code Playgroud)
事实上,我可以pyodbc
直接执行语句: …
我有几天1分钟数据的时间序列,并且希望在一天中的所有日期对其进行平均.
这很慢:
from datetime import datetime
from pandas import date_range, Series
time_ind = date_range(datetime(2013, 1, 1), datetime(2013, 1, 10), freq='1min')
all_data = Series(randn(len(time_ind)), time_ind)
time_mean = all_data.groupby(lambda x: x.time()).mean()
Run Code Online (Sandbox Code Playgroud)
运行差不多一分钟!
虽然像:
time_mean = all_data.groupby(lambda x: x.minute).mean()
Run Code Online (Sandbox Code Playgroud)
只需要几分之一秒.
是否有更快的方式按时间分组?
知道为什么这么慢吗?