微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将sql select打包成大熊猫数据帧

假设我有一个这样的选择:
select instrument,price,date from my_prices;

如何将每个工具的系列产品的价格退回到单个数据框中,并按日期进行索引?

要清楚:我在寻找:

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: ...
Data columns (total 2 columns):
inst_1    ...
inst_2    ...
dtypes: float64(1),object(1)

我不是在寻找:

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: ...
Data columns (total 2 columns):
instrument    ...
price         ...
dtypes: float64(1),object(1)

这很容易;-)

解决方法

更新:最近的熊猫具有以下功能:read_sql_table和read_sql_query.

首先创建一个db引擎(一个连接也可以在这里工作):

from sqlalchemy import create_engine
# see sqlalchemy docs for how to write this url for your database type:
engine = create_engine('MysqL://scott:tiger@localhost/foo')

sqlalchemy database urls.

pandas_read_sql_table

table_name = 'my_prices'
df = pd.read_sql_table(table_name,engine)

pandas_read_sql_query

df = pd.read_sql_query("SELECT instrument,date FROM my_prices;",engine)

旧的答案引用了已被弃用的read_frame(请参阅该问题的version history).

首先阅读通常是有意义的,然后根据您的要求进行转换(因为这些通常在熊猫中是高效和可读的).在你的例子中,你可以pivot的结果:

df.reset_index().pivot('date','instrument','price')

注意:您可能会错过reset_index,您不会在read_frame中指定index_col.

原文地址:https://www.jb51.cc/mssql/81371.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐