编写查询时,我无法根据计数获得前10名中的前10名
此查询中的我的起始表:
top_10_cars = 'CH', 'DA', 'AG', 'DC', 'LA', 'NY', 'SA', 'SE', 'DE', 'MI'
df = pd.read_sql("select\
count(*) as count\
,ID\
,CAR\
from "+db+"\
where pop in ('"+ "','".join(top_10_cars) +"')\
group by\
pop\
,asn\
order by reqs desc\
",conn)
结果是一个列表,其中包含按计数对每个汽车分组的所有ID:
Count ID CAR
67210048 7922 CH
2081655 20001 LA
488850583 7018 AG
567585985 7018 DA
450991 7922 SA
41123124 7018 CH
4135532 11427 DA
...
..
.
以上数据框太大。我只有每辆车的前10个ID最多。
例如CH:
Count ID CAR
67210048 7922 CH
25100548 7546 CH
465100 8542 CH
67254828 5622 CH
1251048 3522 CH
...
..
.
结果表应如下图所示
Count ID CAR
67210048 7922 CH
25100548 7546 CH
..
.
7210048 1546 DA
251005 5678 DA
25100548 7546 DA
465100 8542 DA
...
..
67254828 5622 DA
and
so
on.. 'AG', 'DC', 'LA', 'NY', 'SA', 'SE', 'DE', 'MI'
答案 0 :(得分:0)
这可能不是正确的方法,但我只用一些python包装了它:
df = pd.DataFrame()
for x in top_NA_cars:
dftemp = pd.read_sql("select\
count(*) as count\
,ID\
,CAR\
from "+db+"\
where CAR in ('"+x+"')\
group by\
ID\
,CAR\
order by count desc limit 10",conn)
df = df.append(dftemp)
愿意寻求更好的解决方案,但是^确实有效。