Преобразование столбцов панд в списки, разделенные запятыми, для использования в инструкциях 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