如何自动构建多个列表

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】:

更简单的方法是退后一步,并确保将数据框放入 listdict 等集合中。然后,您可以以可扩展的方式轻松执行操作。

例如:

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 不起作用

以上是关于如何自动构建多个列表的主要内容,如果未能解决你的问题,请参考以下文章

Dockerhub 自动构建多个私有仓库

在 xcode 项目中自动构建和安装多个目标

如何在构建时自动重置 iPhone 模拟器

如何在 Travis CI 中为 C++ 项目并行运行多个构建,每个构建都有单独的脚本?

如何删除自动完成上的清除按钮并仅显示文本

输入项目的文件夹复制版本列表以自动构建 Git 存储库?