запрос панд со списком переменных

0

Я сделал список id, каждое значение - это тип int

temp_id = [7922, 7018, 5650, 209, 21928, 2294, 10507, 3623]

type(tempasn) 
list

Это работает:

Temp = pd.read_sql("select count(*) as count\
                    from "+db+"\
                    where ids in (7922, 7018, 5650, 209, 21928, 2294, 10507, 3623)\
                    order by count desc limit 10", conn)

Я хочу, чтобы переменная из списка добавила ее в мой запрос

Это вызывает ошибки

Temp = pd.read_sql("select count(*) as count\
                    from "+db+"\
                    where ids in "+temp_id+"\
                    order by count desc limit 10", conn)


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

Я не понимаю, что мне нужно изменить здесь


Ответ

Закончился с учетом рекомендаций ниже и изменил мой цикл, который генерирует temp_ids:

temp_id = []
for id in df['ID']:
    if id and id not in temp_id:
        temp_id.append(str(ID))        

        #Convert to list format
temp_id = ", ".join(temp_id)

2 вещи сделали эту работу:

str(ID) & temp_id = ", ".join(temp_id)
  • 1
    Вы также можете использовать что-то вроде этого: "("+str(temp_id).strip('[]')+")"
Теги:
pandas
jupyter-notebook

2 ответа

1
Лучший ответ

Вам нужно сохранить переменные как строку, разделенную запятой, вместо массива.

Поэтому объявляйте temp_id как строку.

temp_id = "7922, 7018, 5650, 209, 21928, 2294, 10507, 3623"

Temp = pd.read_sql("select count(*) as count\
                    from "+db+"\
                    where ids in ("+temp_id+")\
                    order by count desc limit 10", conn)
1

Вам нужна строка, поэтому вы должны взломать массив

temp_id = [7922, 7018, 5650, 209, 21928, 2294, 10507, 3623]


my_string = ",".join(temp_id )

Temp = pd.read_sql("select count(*) as count\
                    from "+db+"\
                    where ids in ("+my_string+")\
                    order by count desc limit 10", conn)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню