如何合并DataFrame同日期数据:生成EVENT_TYPE集合并聚合时长
Pandas 按日期合并数据并生成事件编码解决方案
步骤1:解析日期列
先确保日期列被正确识别为日期类型,提取纯日期部分(若原日期包含时间信息):
import pandas as pd # 替换为你的实际数据加载方式 df = pd.read_csv('your_data_source.csv') # 将含时间的日期列转为纯日期格式 df['date'] = pd.to_datetime(df['datetime_column']).dt.date
步骤2:按日期分组聚合
用groupby结合agg方法,直接对同一天的EVENT_TYPE生成集合,同时聚合时长:
# 分组聚合:按日期分组,事件转集合,时长求和 daily_agg = df.groupby('date').agg( daily_event_set=('EVENT_TYPE', lambda x: set(x)), total_duration=('duration_column', 'sum') ).reset_index()
步骤3:生成事件类型编码
为所有唯一事件类型分配编码,再将每日事件集合转为编码列表:
# 生成事件-编码映射表 unique_events = df['EVENT_TYPE'].unique() event_code_map = {event: idx + 1 for idx, event in enumerate(unique_events)} # 将每日事件集合转换为对应编码列表 daily_agg['event_codes'] = daily_agg['daily_event_set'].apply( lambda s: [event_code_map[event] for event in s] )
最终结果示例
处理后的数据结构如下:
| date | daily_event_set | total_duration | event_codes |
|---|---|---|---|
| 2024-05-01 | {'login', 'logout'} | 150 | [1, 2] |
| 2024-05-02 | {'login'} | 60 | [1] |
内容的提问来源于stack exchange,提问作者irene noLaz
相关产品推荐
相关产品推荐

