将pandas列转换为用于sql语句中的逗号分隔列表
问题描述:
我有一个数据框,我试图将列转换为逗号分隔的列表。最终目标是将此逗号分隔列表作为SQL查询中过滤项目的列表。将pandas列转换为用于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
预期的解决方案 - 请注意周围的IDS引号,因为它们是字符串,在列中的项目名称为“B”,因为这是一个数字字段,其中SQL的工作方式。然后,我最终会发送一个查询像
select * from mytable where ids in (my_ids) or values in (my_values):
my_ids = '杰克', '吉尔', '月'
my_values = 87,55,5555
答
让我们用apply
与参数“减少=假”然后检查该系列的D型和应用适当的参数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
答
尽管这是一个老帖子,但我遇到过类似的问题,并解决它在一个行中使用values
和tolist()
作为
df['col_name'].values.tolist()
所以你的情况,这将是
my_ids = my_data['id'].values.tolist() # ['jack', 'jill', 'july']
my_values = my_data['b'].values.tolist()