如何将按timestamp分组的Pandas DataFrame转为含字典列表的字典
问题:按Timestamp分组生成指定结构的字典
给定如下Pandas DataFrame:
timestamp min max count 0 2022-10-23 22:00:00+00:00 1.000000e+09 9.000000e+99 0 1 2022-10-23 22:00:00+00:00 1.000000e+08 1.000000e+09 2 2 2022-10-23 22:00:00+00:00 1.000000e+07 1.000000e+08 39 3 2022-10-23 22:00:00+00:00 1.000000e+06 1.000000e+07 162 4 2022-10-23 22:00:00+00:00 1.000000e+05 1.000000e+06 491 5 2022-10-23 22:00:00+00:00 1.000000e+04 1.000000e+05 960 6 2022-10-23 22:00:00+00:00 1.000000e+03 1.000000e+04 287 7 2022-10-23 22:00:00+00:00 1.000000e+02 1.000000e+03 244 8 2022-10-23 22:00:00+00:00 1.000000e+01 1.000000e+02 416 9 2022-10-23 22:00:00+00:00 0.000000e+00 1.000000e+01 1
需要按timestamp字段分组,生成如下结构的字典:
items = { '2022-10-23 22:00:00+00:00': [ {'min': 1.000000e+09, 'max': 9.000000e+99, 'count': 0}, {'min': 1.000000e+08, 'max': 1.000000e+09, 'count': 2}, ... ] }
用户尝试的代码:
df.groupby('timestamp')[['max', 'min','count']].apply(lambda g: g.values.tolist()).to_dict()
解决方案
当前代码生成的是嵌套列表,只需修改apply中的lambda函数,用to_dict('records')将每组数据转为字典列表即可:
items = df.groupby('timestamp')[['min', 'max', 'count']].apply(lambda g: g.to_dict('records')).to_dict()
代码说明
groupby('timestamp'):按时间戳字段分组[['min', 'max', 'count']]:指定需要保留的字段,顺序与目标字典的键对应g.to_dict('records'):将每组的DataFrame转换为字典列表,每个字典对应原DataFrame的一行,键为列名、值为对应行的数值.to_dict():将分组结果转为最终字典结构,键为时间戳字符串,值为对应的字典列表
执行后即可得到需求的结构。
内容的提问来源于stack exchange,提问作者Rod0n
相关产品推荐
相关产品推荐

