【问题标题】:Appending groupbys to a nested dictionary将 groupbys 附加到嵌套字典
【发布时间】:2021-08-26 05:15:33
【问题描述】:

我的问题的快速总结: ghGby 是一个键的字典,每个键对应于一个数据帧 groupby。我想将每个 groupby 分成他们自己的 groupby,对应于 groupby 列中的每组天。

groupDays = {}
groupDayIndexer = []
for x in ghGby.keys():
    for y in ghGby[x].DAY.unique().keys():
        if x in groupDays:
            groupDays[x].append(ghGby[x].get_group(y))
        else:
            groupDays[x] = ghGby[x].get_group(y)

数据如下所示:

ghGby[keyA]:

day|transaction|etc.
51 | ......... | ...
51 | ......... | ...
63 | ......... | ...
63 | ......... | ...
63 | ......... | ...
94 | ......... | ...

.get_group(y) 将每组天作为一个单独的对象返回就好了,但是当我将它们附加到 groupDays 时,我只能得到 groupby 的一天,而不是像这样的每一天:

print(groupDays['keyA'])
{keyA: [day51GroupBy, day63GroupBy, day94GroupBy]}

更多背景信息:

原始数据集看起来像这样,只有数千个家庭密钥。我的目标是能够通过指定我想要的日期和想要的家庭钥匙来访问这个大型数据集的一个子集。由于这些是交易,同一密钥可以在同一天有多个条目。

household_key   DAY  PRODUCT_ID
1929            4    1004906
1929            4    1004906
1929            95   1004906
1929            202  1004906
1929            207  1004906    

我想要的输出:

print(groupDays['household_key1929'])
{[ghGby[groupDays['household_key1929'].get_group(day4), ghGby[groupDays['household_key1929'].get_group(day52), ghGby[groupDays['household_key1929'].get_group(day95), ghGby[groupDays['household_key1929'].get_group(day202)]} 

我想这样做以便我可以更轻松地访问我的数据,如下所示:

display(groupDays['household_key1929'][0])

household_key   DAY  PRODUCT_ID
1929            4    1004906
1929            4    1004906

我正在访问与家庭钥匙 1929 关联的日期列表的第一个元素,在本例中为第 4 天。

【问题讨论】:

  • 拜托,你能给我们看看原始数据集吗?以及所需的输出。谢谢!
  • @SamirHinojosa 你好 Samir- 刚刚更新了一些更多信息,希望它能让事情更清楚
  • 能否向我们展示所需的输出作为数据集?谢谢!
  • @SamirHinojosa 没问题,刚刚添加。
  • 我不知道dict的值中的数据是什么......但我想你需要使用explode(),你可以看到related answer,然后制作groupby()根据您的需要

标签: python pandas dictionary for-loop pandas-groupby


【解决方案1】:

简单的嵌套字典:

dic2make = {}
for indexer in dataList:
    dic2make[indexer] = {}
    for element in groupbyDict[indexer].DAY.unique().keys():
        dic2make[indexer][element] = groupbyDict[indexer].get_group(element)

一个简单问题的非常简单的解决方案。我是初学者,因此我对问题的描述非常混乱。不管怎样——这就是我要找的。如果这些对您来说都没有意义,但您认为您需要了解正在发生的事情,请随时发表评论。

【讨论】:

    猜你喜欢
    • 2020-08-07
    • 2018-06-27
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    相关资源
    最近更新 更多