2017-05-24 59 views
1

我有一个数据框,我试图将列转换为逗号分隔的列表。最终目标是将此逗号分隔列表作为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

回答

1

让我们用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 
0

尽管这是一个老帖子,但我遇到过类似的问题,并解决它在一个行中使用valuestolist()作为

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

所以你的情况,这将是

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