我在表A中有100条记录,我在这里只列出4条,但请使用循环来解决这个问题
A = ['A001', 'B001','C001','Bdd','djd.djsx']
AB = pd.DataFrame(A, columns = ['app_name'])
AB
app_name
0 A001
1 B001
2 C001
3 Bdd
4 djd.djsx
我有SQL查询看起来像这样
select COUNT (DISTINCT [R_ID])
from database_view
where [app_name] in ('A001')
我想使用循环执行查询100次,并将最终结果追加到AB中
我尝试的是:
For i in AB:
sql = '''select COUNT (DISTINCT [R_ID])
from database_view
where [app_name] in {i}'''
a=pd.read_sql_query(sql,database)
final = AB.append(a,ignore_index = True)
final
但是它不起作用,而且我发现它会在df“AB”的右边多加一列,但是它最后会把计数值附加到新的一行。
预期结果如下所示,expected result
这意味着应用程序A001有6个不同的R_ID,应用程序B 001有1个不同的R_ID
任何帮助是真正的appreicated!
2条答案
按热度按时间xxhby3vn1#
考虑使用
GROUP BY
的单个聚合查询,没有任何for循环,并且需要附加到 Dataframe 。SQL查询运行后,使用DataFrame.query将结果过滤到100个应用程序的列表中。rqqzpn5f2#
你忘了在SQL查询中的for循环和f-string中放入列名。试试这个代码:
更新-1:编辑SQL查询: