假设一个数据帧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,则不需要类型转换。

09-10 03:16