datetime列按20分钟分组时如何聚合字典列

2024-05-23 22:02:37 发布

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

我正在尝试根据时间间隔对datetime列进行分组。分组时间间隔可以是5、10、15或其他。对datetime列进行分组后,需要捕获为记录的组的最新或最高datetime。然后我需要将字典列与最近的键值对合并。像这样的--

-------------------------------------------------------------------
created_date                 |  parameter_value  |  device_info   |
-------------------------------------------------------------------
2020-09-23 06:21:00.114104   | {'humidity': 60}    | {'device':'env', 'battery':50}
2020-09-23 06:37:00.310054   | {"pressure":54}     | {'device':'env', 'battery': 49}
2020-09-23 08:00:00.126441   | {'humidity':34}     | {'device':'env', 'battery': 45}
2020-09-23 08:21:00.140708   | {'temperature': 35} | {'device':'env', 'battery': 40}
2020-09-23 08:25:00.099155   | {'temperature':24}  | {'device':'env', 'battery': 39}

我想得到类似于--

--------------------------------------------------------------------------------------------------
created_date        |  parameter_value                   |  device_info                 |
--------------------------------------------------------------------------------------------------
2020-09-23 06:40:00 | {'humidity': 60, "pressure":54}    | {'device':'env', 'battery':49}
2020-09-23 08:00:00 | {'humidity':34}                    | {'device':'env', 'battery': 45}
2020-09-23 08:40:00 | {'temperature':24}                 | {'device':'env', 'battery':39}

我尝试使用df.groupby(pd.Grouper(key='created_date',freq='20min'))对日期时间进行分组。但是如何使用聚合函数和最新键值合并参数值列和设备信息列


Tags: infoenvdatetimedate间隔parametervaluedevice
1条回答
网友
1楼 · 发布于 2024-05-23 22:02:37

^{}与lambda函数和合并字典一起使用,这里使用的是来自this的解决方案。lst通过将空字典转换为布尔值并使用^{}进行筛选来删除只有空字典的行:

df = (df.groupby(pd.Grouper(key='created_date', freq='20min'))
       .agg(lambda x: {k: v for d in x for k, v in d.items()}))
df = df[df.astype(bool).any(axis=1)]
print (df)
                                      parameter_value  \
created_date                                            
2020-09-23 06:20:00  {'humidity': 60, 'pressure': 54}   
2020-09-23 08:00:00                  {'humidity': 34}   
2020-09-23 08:20:00               {'temperature': 24}   

                                          device_info  
created_date                                           
2020-09-23 06:20:00  {'device': 'env', 'battery': 49}  
2020-09-23 08:00:00  {'device': 'env', 'battery': 45}  
2020-09-23 08:20:00  {'device': 'env', 'battery': 39} 

相关问题 更多 >