Преобразование столбцов панд в списки, разделенные запятыми, для использования в инструкциях sql

У меня есть датафрейм, и я пытаюсь превратить столбец в список через запятую. Конечная цель - передать этот разделенный запятыми список как список отфильтрованных элементов в запросе SQL.

Как мне это сделать?

> import pandas as pd
> 
> mydata = [{'id' : 'jack', 'b': 87, 'c': 1000},
>           {'id' : 'jill', 'b': 55, 'c':2000}, {'id' : 'july', 'b': 5555, 'c':22000}] 
  df = pd.DataFrame(mydata) 
  df

Ожидаемое решение - обратите внимание на кавычки вокруг идентификаторов, так как они являются строками и элементами в столбце с названием "b", поскольку это числовое поле и способ работы SQL. Затем я бы в конечном итоге отправить запрос, как

select * from mytable where ids in (my_ids)  or values in (my_values):

my_ids = 'jack', 'jill', 'июль'

my_values ​​= 87,55,5555

2 ответа

Хотя это старый пост, но я столкнулся с подобной проблемой и решил ее в одну строку, используя values а также tolist() как

df['col_name'].values.tolist()

Так что в вашем случае это будет

my_ids = my_data['id'].values.tolist() # ['jack', 'jill', 'july']
my_values = my_data['b'].values.tolist()

Давайте использовать apply с аргументом 'lower =False', затем проверьте dtype серии и примените правильный аргумент к join:

df.apply(lambda x: ', '.join(x.astype(str)) if x.dtype=='int64' else ', '.join("\'"+x.astype(str)+"\'"), reduce=False)

Выход:

b               87, 55, 5555
c          1000, 2000, 22000
id    'jack', 'jill', 'july'
dtype: object
Другие вопросы по тегам