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)
我的目标是仅使用熊猫的方法和函数来重写它。首先,我想分配一个新列NewCol
,其中还将包含一个新列PostId
,但是我非常怀疑我应该分两步进行。任何人都可以指导我寻求解决方案或提供我可以分析的完整代码吗?
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']]