python - 制作子数据框列表的最快方法
问题描述
我有大量数据。
它包含 10 年的日期变量(约 3,650 天),每天有超过 10,000 次观察。
因此,总行数为 36,500,000。
我的目标是制作按日期分组的多个(大约 3,650 个)子数据框并将其放入一个列表中。
我会使用的方式是for-loop
,这需要很多时间。
实际上,按照我的电脑规格,完成这项工作大约需要 1 个小时。
我想找到创建多个子数据帧并将其放入列表的最佳(最快)方法。
我的代码和简单示例如下。
谢谢阅读。
import pandas as pd
import pandas as pd
import numpy as np
df = pd.DataFrame({'date' : ['20200701','20200701','20200702','20200702','20200703'],
'city' : ['NewYork', 'Tokyo', 'NewYork', 'Tokyo', 'Moscow'],
'amt' : [1,2,10,20,100]})
dfs1 = []
array = df.values
for each in np.unique(array[:,0]):
dfs1.append(pd.DataFrame(array[array[:,0] == each,:]).rename(columns = {0 : 'date', 1: 'city', 2 : 'amt'}))
解决方案
对于更快的迭代,您可以尝试并行执行,尽管更简单的方法是列表理解
[df[df.date==i] for i in df.date.unique()]
推荐阅读
- node.js - 在 MEAN Stack 应用程序中重新加载页面后无法获取 /page
- javascript - 无效输入后如何设置 DOM 样式?
- c++ - 在 C++ 中寻找吃得最少的人
- security - 使用机器学习检测恶意网页
- html - 窗口调整大小时 CSS Grid 行调整大小
- java - 2D 单词搜索实现:获取索引超出范围异常 (Java)
- php - Swift Poststring 没有得到我的价值观
- single-sign-on - 有没有办法过滤/避免 keycloak SAML 断言中的重复属性名称?
- python - 如何为绘图添加标签?
- nanomsg - nanomsg (nng) 中的多个发布者和订阅者