如何将按小时、分钟分组后的多索引合并为单一时间间隔索引?
解决方法
方法一:分组时直接生成时间字符串作为键
直接把login_time格式化为%H:%M:%S的字符串作为分组依据,一步得到符合目标格式的结果:
# 新增时间间隔字符串列 df2['time_interval'] = df2['login_time'].dt.strftime('%H:%M:%S') # 按时间间隔分组求和并转为DataFrame df_grouped = df2.groupby('time_interval')['counted'].sum().reset_index()
最终的df_grouped会包含两列:time_interval(格式如20:00:00)和counted(对应时段的总打卡次数)。
方法二:将已生成的多索引结果转换为单一时间索引
如果已经执行了你原本的分组代码,可通过索引映射把多索引合并为时间字符串:
# 你的原分组代码 df_grouped = df2.groupby([df2['login_time'].dt.hour, df2['login_time'].dt.minute])['counted'].sum() # 把多索引的小时、分钟格式化为标准时间字符串 df_grouped.index = df_grouped.index.map(lambda x: f"{x[0]:02d}:{x[1]:02d}:00") # 重置索引并修改列名 df_grouped = df_grouped.reset_index().rename(columns={'index': 'time_interval'})
用f"{x[0]:02d}:{x[1]:02d}:00"可以保证小时和分钟始终是两位数字(比如9点会显示为09:00:00),保持格式统一。
内容的提问来源于stack exchange,提问作者Fernando Araiza
相关产品推荐
相关产品推荐

