python - 需要一种更有效的方法来从单个大型数据帧创建数据帧字典
问题描述
所以问题是我有一个很大的数据框(大约数百万行),我需要根据度量值(在 df 中可以有几千个唯一值)将它拆分为单独的 dfs,然后将所有单独的 dfs 放入一本字典。
数据如下所示:
>>> df.sample(20)
Out[104]:
time mhi metric
1953310 2020-09-26 09:57:59 0.364575 100004_uf7-15_l14-40
5748967 2020-11-15 14:50:27 0.430073 100004_uf11-15_l10-45
3124709 2020-10-17 23:32:50 1.000000 100004_uf5-21_l26-40
2201278 2020-10-01 12:30:26 0.020645 100004_uf09-27_l26-46
5515393 2020-11-14 03:48:50 1.000000 100004_uf9-18_l26-35
1813859 2020-09-25 00:48:42 0.572557 100004_uf7-24_l10-40
1656151 2020-09-24 00:39:28 0.673656 100004_uf07-24_l32-42
4796411 2020-11-10 09:21:54 1.000000 100004_uf5-15_l22-30
92122 2020-07-06 07:20:37 1.000000 100004_uf5-21_l26-30
3690550 2020-10-25 23:40:57 0.268361 100004_uf09-18_l28-42
4946382 2020-11-11 01:58:22 1.000000 100004_uf5-18_l22-35
3899731 2020-11-01 11:48:08 1.000000 100004_uf7-15_l22-30
5996972 2020-11-17 10:55:22 1.000000 100004_uf07-21_l32-42
7471727 2021-01-01 11:52:45 1.000000 100004_uf07-27_l30-42
3669036 2020-10-25 20:10:33 1.000000 100004_uf5-21_l10-35
1166225 2020-09-17 11:58:21 1.000000 100004_uf7-15_l22-30
5832113 2020-11-16 02:52:32 0.349082 100004_uf07-21_l28-54
1458903 2020-09-21 21:04:32 0.524897 100004_uf07-18_l30-42
3094785 2020-10-17 15:46:02 1.000000 100004_uf5-24_l18-30
674615 2020-08-05 02:31:14 0.401657 100004_uf11-18_l34-46
我目前正在做的是这样的:
versions = df.metric.unique()
mhi_dict = {ver: df.loc[df.metric == ver] for ver in versions}
然而事实证明,这非常耗时,对于大约 1500 个唯一版本,平均需要 5 分钟以上。有没有办法以某种方式加快速度?
解决方案
df_grouped = df.groupby('metric')
mhi_dict = {}
for key in df_grouped.groups:
group = df_grouped.get_group(key)
mhi_dict[key] = group
推荐阅读
- android - 如何将点击事件传递给框架布局中的重叠视图
- javascript - 删除父级时如何删除子级?
- ios - 无法获取组的成员 (XMPP)
- android - Android内核编译中的UImage错误
- javascript - value === undefined vs typeof value === node.js中的'undefined'
- ios - 当我使用 swift 4 和 alamofire4 发布发布请求时,servlet request.parameter() 函数返回 null
- javascript - 为什么选择的选定值会在动态下拉列表中发生变化?
- excel - 从不同的工作表中自动复制粘贴 Excel 范围
- python - Pandas 系列 value_counts 对不同计数的工作方式不同
- java - 使用python在java代码的方法块中添加一行