python - PandaSQLException: (sqlite3.OperationalError) 靠近 "(": 语法错误,如何解决?
问题描述
我正在尝试使用 SQL 语法查询 pandas 数据框。我导入了“import pandasql as ps”,并加载了一个数据框。然后我输入了这个简单的语法:
ps.sqldf(
"""
SELECT department, first_name, AVG(salary) OVER (PARTITION BY department) AS average
FROM employee
GROUP BY department, first_name, salary
"""
).head()
它返回了这个错误:
PandaSQLException Traceback (most recent call last)
<ipython-input-6-2ecbea651075> in <module>
----> 1 ps.sqldf(
2 """
3 SELECT department, first_name, AVG(salary) OVER (PARTITION BY department) AS average
4 FROM employee
5 GROUP BY department, first_name, salary
~/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pandasql/sqldf.py in sqldf(query, env, db_uri)
154 >>> sqldf("select avg(x) from df;", locals())
155 """
--> 156 return PandaSQL(db_uri)(query, env)
~/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pandasql/sqldf.py in __call__(self, query, env)
61 result = read_sql(query, conn)
62 except DatabaseError as ex:
---> 63 raise PandaSQLException(ex)
64 except ResourceClosedError:
65 # query returns nothing
PandaSQLException: (sqlite3.OperationalError) near "(": syntax error
[SQL:
SELECT department, first_name, AVG(salary) OVER (PARTITION BY department) AS average
FROM employee
GROUP BY department, first_name, salary
]
(Background on this error at: http://sqlalche.me/e/14/e3q8)
我尝试重写整个查询,从笔记本再次复制和粘贴,但仍然无法解决“(”问题。请你们告诉我如何修复 ti?
解决方案
推荐阅读
- vue.js - Vue.js 模态对话框输入表单
- javascript - 如何为每个新对象创建不同的 URL
- python - Python,需要帮助将变量分解为列表
- javascript - JavaScript TypeError 仅在 IE 11 中
- android - Exoplayer:从本地文件播放视频时,循环创建 OutOfMemoryError
- apache-spark - 如何将 JSON 字符串数组分解为行?
- html - Angular 8:将表单数据作为服务发送到另一个组件
- c++ - Visual Studio Code 不理解 CMake -DDEBUG
- kubernetes - Azure 中 Kubernetes 的仪表板不断断开连接并出现错误“转发 8001 -> 9090 时发生错误”
- python - 在二维中绘制具有许多权重的线性回归分离器