Csv 将列转换为逗号分隔的列表,以便在sql语句中使用

Csv 将列转换为逗号分隔的列表,以便在sql语句中使用,csv,pandas,dataframe,pandasql,Csv,Pandas,Dataframe,Pandasql,我有一个数据框,我正试图将该列转换为逗号分隔的列表。最终目标是在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.Dat

我有一个数据框,我正试图将该列转换为逗号分隔的列表。最终目标是在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
预期解决方案-请注意ID周围的引号,因为它们是字符串,而标题为“b”的列中的项是数字字段,并且SQL的工作方式也是这样。然后我最终会发送一个查询,如

select * from mytable where ids in (my_ids)  or values in (my_values):
我的ID=‘杰克’、‘吉尔’、‘七月’


my_values=87,555555

让我们使用参数'reduce=False'的
apply
,然后检查序列的数据类型,并将正确的参数应用于
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()