pd.read_sql_query("""SELECT Tab1.Title, NewTab.NewCol1 FROM
(SELECT Col1 AS NewCol, COUNT(*) AS NewCol1
FROM Tab2 GROUP BY Col1) AS NewTab
JOIN Tab1 ON NewTab.NewCol=Tab1.Id
WHERE Tab1.Num=1
ORDER BY NewCol1 DESC""", conn)
我的目标是仅使用 pandas 的方法和函数重写它。首先,我想分配一个新列 NewCol
,其中还包含一个新列 PostId
,但我非常怀疑我是否应该分两步完成。谁能指导我找到解决方案或提供我可以分析的完整代码?
最佳答案
您想在 pandas 中仅用一行重写此查询吗?它可能会完成,但它非常不可读。这样的东西看起来更整洁
NewTab = Tab2.groupby('Col1').size().reset_index(name = 'NewCol1').rename(columns = {'Col1': 'NewCol'})
现在您可以合并这两个表:
result_df = pd.merge(NewTab, Tab1, left_on = 'NewCol', right_on = 'Id')[result_df.Num == 1]
您现在可以在合并后对数据框进行排序并指定列:
result_df.sort_values(by=['NewCol1'], inplace = True)
result_df = result_df[['Title','NewCol1']]
关于Python SQL 到 pandas DataFrame 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59239775/