代码之家  ›  专栏  ›  技术社区  ›  chowpay

使用包含var的列表的pandas sql

  •  0
  • chowpay  · 技术社区  · 7 年前

    我通过这样做创建了一个位置列表:

    list_NA = []
    for x in df['place']:
        if x and x not in list_NA:
            list_NA.append(x)
    

    这给了我一个这样的列表:

    print(list_NA)
    
    ['DEN', 'BOS', 'DAB', 'MIB', 'SAA', 'LAB', 'NYB', 'AGA', 'QRO', 'DCC', 'PBC', 'MIC', 'MDW', 'SAB', 'LAA', 'NYA', 'PHL', 'DCB', 'CHA', 'CHB', 'SEB', 'AGB', 'SEC', 'DAA', 'MEX']
    

    我想在我的WHERE子句中使用此列表,如下所示:

    df2 = pd.read_sql("select airport from "+db+" where airport in "+list_NA+"", conn)
    

    但我不断地得到这个错误:

    TypeError: Can't convert 'list' object to str implicitly
    

    我试着做str(list_na)或tuple(list_na),但是

    1 回复  |  直到 7 年前
        1
  •  1
  •   Dickster    7 年前

    您将要将列表转换为带单引号的逗号分隔字符串。

    "','".join(list_NA)
    

    但您还需要在两端用单引号括起来。

    df2 = pd.read_sql("select airport from "+db+" where airport in ('"+ "','".join(list_NA) +"')", conn)