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

Python datetime列按20分钟分组时如何聚合字典列,python,pandas,dataframe,Python,Pandas,Dataframe,我正在尝试根据时间间隔对datetime列进行分组。分组时间间隔可以是5、10、15或其他。对datetime列进行分组后,需要捕获为记录的组的最新或最高datetime。然后我需要将字典列与最近的键值对合并。像这样的-- ------------------------------------------------------------------- created_date | parameter_value | device_info | --

我正在尝试根据时间间隔对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.groupbypd.Grouperkey='created_date',freq='20min'对日期时间进行分组,但是如何使用聚合函数和最新键值合并参数值列和设备信息列。

与lambda函数和合并字典一起使用,下面是使用的解决方案。lst通过将行转换为布尔值并使用以下内容进行筛选,删除仅包含空字典的行:

与lambda函数和合并字典一起使用,这里是使用的解决方案。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}