【发布时间】:2020-08-06 23:50:24
【问题描述】:
我有一个包含 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 作为值的字典,但找不到将这些值转换为我可以使用和操作的单个数据帧的方法。如果有办法做到这一点,请告诉我!我将不胜感激。谢谢
【问题讨论】:
-
你试过了吗:
dict_of_productid = {k: v for k, v in df.groupby('product_id').reset_index()} -
我不确定我是否理解 -
dict值已经是DataFrame对象。你在挣扎什么?还有你到底想在这里完成什么,因为我很确定这不是最好的方法。如果你的意思是你希望这些命名为df1、df2、df3,那么最好还是坚持使用dict_of_productid['dvvd56']等来访问它们。 -
有 240 个单独的 product_id,我可以像你说的那样调用每个值,执行 `dict_of_productid['dvvd56'] 但我必须对所有 240 个值都这样做。我在问是否有一种更简单的方法可以做到这一点,不会让我明确地为它们中的每一个编写代码。
-
这样说吧。你对这些
DataFrames 的意图是什么?您是想要操纵这些的副本(即原始df未被触及),还是想要传播原始df本身的更改?如果是前一种情况,您无法真正摆脱在单个名称或dict值中单独引用。如果是第二种情况,那么您想对这些组做什么?这可能是可以实现的,而无需您首先将它们分开。 -
如果您对这 240 个
product_id中的每一个都有某种相同的过程,那么您不需要关心各个帧,您可以直接在df本身上操作它并内置在函数中,或者如果您需要满足条件,请使用df.apply。
标签: python pandas dataframe dictionary pandas-groupby