首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandasql查询列表或数据块

Pandasql查询列表或数据块
EN

Stack Overflow用户
提问于 2018-11-17 18:25:30
回答 1查看 874关注 0票数 1

给定一组文件--每个文件都被读取到一个不同的dataframe中-- pandasql查询如何引用它们?

在下面的片段中,我们有一个list of dataframes:但是同样的问题也适用于dict

代码语言:javascript
复制
import pandas as pd
from  pandasql import sqldf
# Read in a set of 10 files each containing columns `id` and `estimate`
dfs = [pd.read_csv('file%d.csv' %d) for d in range(1,10+1)]
sql_res = sqldf("select d2.estimate - d1.estimate \
    from dfs[1] d1 join dfs[2] d2 on d2.id = d1.id", locals())

dfs[1]dfs[2]展示了我想要做的事情,但它们不是有效的语法。对于如何以pandasql可以支持的方式构造这类问题,有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-17 19:16:54

您可以告诉pandasql一个表名/别名的列表,而不仅仅是按照PandasSQL.__call__的docstring (无法找到PandasSQL.__call__的在线版本)传递PandasSQL.__call__

代码语言:javascript
复制
:param env: Variables environment - a dict mapping table names to pandas dataframes.

但请注意,您必须将想要查询的所有表放在那里。

下面是一个小示例,它使用PandasSQL类而不是docstring中推荐的sqldf

代码语言:javascript
复制
import pandasql

sql = pandasql.PandaSQL()


data_frames = [
    pd.DataFrame({'a': [1,2,3]}),
    pd.DataFrame({'b': [1,4,5]})
]

# create aliases for your dataframes
env = {'t%d' % (i + 1): df for i, df in enumerate(data_frames)}

# tell pandasql to use the aliases
print(sql('select t1.* from t1 join t2 on t1.a = t2.b', env=env))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53354213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档