如何自动构建多个列表
Posted
技术标签:
【中文标题】如何自动构建多个列表【英文标题】:How do I build multiple list automatically 【发布时间】:2019-01-27 17:30:34 【问题描述】:我有数百个数据框,假设名称是df1
,...,df250
,我需要按这些数据框的一列构建列表。平时都是手动做的,今天数据太多了,容易出错
这就是我所做的
list1 = df1['customer_id'].tolist()
list2 = df2['customer_id'].tolist()
..
list250 = df250['customer_id'].tolist()
这太手动了,我们可以用更简单的方法来做吗?
【问题讨论】:
为什么要拆分它?[x['customer_id'].tolist() for _, x in df.groupby(np.arange(len(df))//1000)]
基于您之前的问题
数据框上已经有几列,我需要根据该列表从 MongoDB 查询几列,我按您的答案 [x['customer_id'].tolist() for _, x in df.groupby(np.arange(len(df))//1000)]
拆分,两个数据框将被合并
【参考方案1】:
更简单的方法是退后一步,并确保将数据框放入 list
或 dict
等集合中。然后,您可以以可扩展的方式轻松执行操作。
例如:
dfs = 1: df1, 2: df2, 3: df3, ... , 250: df250
lists = k: v['customer_id'].tolist() for k, v in dfs.items()
然后您可以以lists[1]
、lists[2]
等身份访问结果。
还有其他好处。例如,您不再污染命名空间,省去了显式定义变量名的工作,您可以轻松存储和传输相关的对象集合。
【讨论】:
【参考方案2】:使用exec函数可以执行存储在字符串中的python代码:
for i in range(1,251):
s = "list"+str(i)+" = df"+str(i)+"['customer_id'].tolist()"
exec(s)
【讨论】:
【参考方案3】:我会使用下一个代码。在这种情况下,无需手动创建 DataFrame 列表。
cust_lists = 'list'.format(i): globals()['df'.format(i)]['customer_id'].tolist()
for i in range(1, 251)
现在您可以按名称从 cust_lists 字典中访问您的列表,如下所示:
`cust_lists['list1']`
或
`list1`
【讨论】:
对不起,我删除了最佳答案,我尝试list3
不起作用以上是关于如何自动构建多个列表的主要内容,如果未能解决你的问题,请参考以下文章