2

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

my_ids = '杰克','吉尔','七月'

my_values = 87,55,5555

4

2 回答 2

9

values虽然这是一篇旧帖子,但我遇到了类似的问题并使用and tolist()as在一行中解决了它

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

所以在你的情况下,它将是

my_ids = my_data['id'].values.tolist() # ['jack', 'jill', 'july']
my_values = my_data['b'].values.tolist()
于 2018-02-22T21:36:24.363 回答
3

让我们使用apply参数 'reduce=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
于 2017-05-24T22:05:53.110 回答