python - 如何将 DataFrame 的字典转换为单独的 DataFrame(Python、Pandas)
问题描述
我有一个包含 4 列的原始数据框(例如,我们将它们称为 product_id、year_month、week、order_amount)和 > 50,000 行。有 240 个单独的 product_id 值,每个值在数据中的行为都不同,因此我想根据单独的 product_id 从原始数据帧创建单独的数据帧。我能够通过利用来做到这一点:
dict_of_productid = {k: v for k, v in df.groupby('product_id)}
这创建了一个字典,键是 product_id,值是列:product_id、year_month、week、order_amount。字典中的每个项目还保留了原始 df 的索引。例如:如果 product_id = dvvd56 在第 4035 行上,那么在字典上它将位于为 product_id dvvd56 创建的数据帧上,但索引仍为 4035。
我现在坚持的是一个以df为值的字典,但找不到将这些值转换为我可以使用和操作的单个数据帧的方法。如果有办法做到这一点,请告诉我!我将不胜感激。谢谢你
解决方案
我找到了解决这个问题的方法,但我不知道这是否是最合适的方法,但它可能有助于进一步的答案,以澄清我想要做什么。
第一步是将唯一值转换为列表,然后按顺序对它们进行排序:
product_id_list = df['product_id'].value_counts().index.to_list()
product_id_list = sorted(product_id_list)
完成此操作后,我创建了一个公式,然后使用 product_id_list 的各个值对其进行迭代:
def get_df(key):
for k in key:
df_productid = dict_of_productid[k]
return df_productid
for c, i in enumerate(product_id_list):
globals()[f'df_{c}'] = get_df([f'{i}'])
这使我现在可以将创建的字典的所有值分隔成单独的数据帧,我可以在不明确说明产品 ID 的情况下调用这些数据帧。我可以做df_1
并获取数据框。
(我不知道这是否是最有效的方法)
推荐阅读
- r - 包环境操作并提交给 CRAN
- sql - 将格式为 X XXX,XX 的字符串数字转换为数字
- python - dask.distributed LocalCluster 与线程与进程之间的区别
- html - 伸缩容器内的每个伸缩元素在增长/收缩时是否可以有不同的过渡时间?
- android - 如何修复 gradle build for android studio 中的重复类
- asp.net-mvc - 如何使用实体框架安全地将 id 数据类型从 INT 更改为字符串?
- google-api - 无法访问 GSuite 组 - 错误代码 400
- r - 如何解决“无法解析”问题以使用 bigrquery 下载表
- firebase - 有没有办法在创建时获取文档的时间戳
- arrays - 如何通过子文档和文档查找并且更新正在推送子文档