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