假设一个数据帧scoreDF
:
date time score
sec_code
1048 2015-02-25 09:21:00 28
2888 2015-02-25 09:21:00 25
945 2015-02-25 09:21:00 23
4 2015-02-25 09:21:00 22
669 2015-02-25 09:21:00 15
我需要做一个mysql查询来检索与
scoreDF.index
列(即sec_code
列)中的值匹配的所有行。通常我会做一个循环:
finalResultDF = DataFrame()
queryString = 'SELECT * FROM tableA WHERE sec_code = ' + code
for code in scoreDF.index:
queryResultDF = sql.read_sql(queryString, con)
finalResultDF.append(queryResultDF)
如果没有传递值列表(即
scoreDF.index
作为where condition)的循环,是否可以以不同的方式执行此操作?我在谷歌上搜索了几个小时,有些人提到了read_sql
的“参数”,但我想不通。 最佳答案
实际上你可以不用任何循环就可以做到这一点。
queryString = 'SELECT * FROM tableA WHERE sec_code in '+tuple(scoreDF.index)
这将直接给出结果。这是假设
scoreDF.index
是一个list
。如果它已经是一个tuple
,则不需要类型转换。