使用Python和Pandas在数据帧中模拟SQL查询时遇到语法问题
我正在使用:使用Python和Pandas在数据帧中模拟SQL查询时遇到语法问题,python,python-3.x,pandas,sqlite,dataframe,Python,Python 3.x,Pandas,Sqlite,Dataframe,我正在使用: 蟒蛇3 熊猫 本地版上的Sqllite3(尽管 这一点对此不重要) 我有一个项目,我正在尝试从查询中删除一些连接、计数、组和其他聚合函数——它们都需要移动到代码中 我是Python新手,浏览了Pandas手册和其他有关StackOverflow的资源 我正在尝试重新创建以下查询: SELECT D.ID, D.Name, COUNT(W.ID) FROM Departments D LEFT JOIN Widgets W ON D.ID=W.department GROUP B
- 蟒蛇3
- 熊猫
- 本地版上的Sqllite3(尽管 这一点对此不重要)
SELECT D.ID, D.Name, COUNT(W.ID)
FROM Departments D
LEFT JOIN Widgets W ON D.ID=W.department
GROUP BY D.ID, D.Name
HAVING COUNT(W.ID)>0
在Python方面-仅使用两个查询:
SELECT * FROM departments
SELECT * FROM widgets
我可能错了,但我相信这是必须发生的:
- 导入python模块并创建连接
- 进口大熊猫(据我所知,这是一个有争议的问题) 这类工作的有效工具)
- 将我的查询分配给变量
- 熊猫读过这些问题了吗
- (合并?)查询结果以构造数据帧
- 使用数据帧上的方法执行计数和聚合
import sqlite3
import pandas as pd
... #functions and connection info removed
with conn:
sql1="SELECT * FROM departments"
sql2="SELECT * FROM widgets"
#print("Read Queries Into Dataframes")
df = pd.read_sql(sql1, conn)
lf = pd.read_sql(sql2, conn)
#print("Connected and read - print the dataframe")
merged_df=pd.merge(df, lf, left_on='id', right_on='department', how='inner') #.groupby(['id'])
#result=merged_df.groupby(['id'])
#result = pd.merge(df, lf, on='key')
#print(result)
注:
- 它似乎(大部分)工作,直到我介绍了它出现的小组
- 我在ID中得到了一个关键错误-可能是语法错误或者我 没有正确的别名
- 将联接类型(方式)从左改为内会产生一些NAN 结果
merged_-df.groupby(['id']).count()
您也可以按id和name进行分组->merged_-df.groupby(['id',name']).count()
谢谢大家-非常有用的信息。我可以用以下方法处理这个问题:pd.merge(dfu departments[[“id”,“dname”]),dfu widgets[[“department”,“widgetid”,“purchased”,“Type”]],how='inner',left'u on='id',right'u on='department'