小编joe*_*415的帖子

将存储过程选择结果读入pandas数据帧

鉴于:

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直接执行语句: …

sql-server stored-procedures sqlalchemy pyodbc pandas

8
推荐指数
3
解决办法
1万
查看次数

更快的方式来组合熊猫的时间

我有几天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)

只需要几分之一秒.

是否有更快的方式按时间分组?

知道为什么这么慢吗?

python time datetime group-by pandas

5
推荐指数
1
解决办法
5259
查看次数