根据日期对字典中的键进行分组?

2024-09-29 01:35:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典(mydict),它的键是日期(时间戳),它的项是数据帧(它们都是相同的形状),有两列索引和值,如下所示:

  mydict: {
    "Timestamp('2019-01-04 06:05:32')" : {
      1, 4
      2,23
      3,2
      4,32
    },
    " Timestamp('2019-01-05 05:02:12')" : {
      1, 6
      2,3
      3,20
      4, 2

    }
    "Timestamp('2019-01-10 08:05:32')" : {
      1, 7
      2,33
      3,5
      4,21
    },
    " Timestamp('2019-01-11 04:02:12')" : {
      1, 4
      2,11
      3,7
      4,11

    }

我想根据一年中同一周的日期对键进行分组。然后取数据帧的平均值。例如,第一个键和第二个键在一年中的第一周,因此它们应该组合在一起,第三个键和第四个键也是如此。因此,我想要的字典应该是这样的:

   mynew_dict:
    "week1" : {
      1, 5
      2,13
      3,11
      4,17
    },
    "week2" : {
      1, 5.5
      2,22
      3,6
      4,16

    }
    

仅显示每个键的项的实际值: enter image description here


Tags: 数据字典时间dictmydicttimestamp平均值形状
1条回答
网友
1楼 · 发布于 2024-09-29 01:35:00

您可以尝试以下方法:

from itertools import groupby

mynew_dict = {}
for (year, week), keys in groupby(sorted(mydict),
                                  lambda key: (key.year, key.weekofyear)):
    dfs = [mydict[key] for key in keys]
    mynew_dict[f'week {week} of year {year}'] = sum(dfs[1:], dfs[0]) / len(dfs)

示例词典的结果(如果我理解正确)

mydict = {
    pd.Timestamp('2019-01-04 06:05:32'): pd.DataFrame([4, 23, 2, 32]),
    pd.Timestamp('2019-01-05 05:02:12'): pd.DataFrame([6, 3, 20, 2]),
    pd.Timestamp('2019-01-10 08:05:32'): pd.DataFrame([7, 33, 5, 21]),
    pd.Timestamp('2019-01-11 04:02:12'): pd.DataFrame([4, 11, 7, 11])
}

{'week 1 of year 2019':
      0
0   5.0
1  13.0
2  11.0
3  17.0,
 'week 2 of year 2019':
      0
0   5.5
1  22.0
2   6.0
3  16.0}

相关问题 更多 >