2017-05-24 62 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() 
相關問題