Pandas如何按标识匹配关联行,新增对应事件时间及关联值列
实现方案
核心思路
原数据存储了两类可拆分的信息,拆分后关联即可实现需求,比透视表逻辑更简洁、性能更优:
- 主数据:
identification列非空的行,存储标识、初始值、初始时间 - 事件数据:
identification_bis列非空的行,存储事件发生时间、对应关联标识、事件值
实现代码
import pandas as pd # 构造示例原始DataFrame,实际使用时替换为你自己的df即可 df = pd.DataFrame([ ["2021-10-07 10:00:01", "123456789", 1000, "", ""], ["2021-10-07 10:00:05", "", "", "123456789", 900], ["2021-10-07 10:00:10", "", "", "123456789", 100] ], columns=["timestamp", "identification", "value", "identification_bis", "value_bis"]) # 拆分主表,仅保留identification非空的行,删除无用字段 # 若你的空值是None/NaN,将!= ""替换为.notna()即可 main_df = df[df["identification"] != ""][["timestamp", "identification", "value"]].copy() # 拆分事件表,仅保留identification_bis非空的行,重命名字段用于后续关联 event_df = df[df["identification_bis"] != ""].rename( columns={"timestamp": "event_time", "identification_bis": "identification"} )[["identification", "event_time", "value_bis"]].copy() # 按标识字段等值关联得到最终结果 result = pd.merge(main_df, event_df, on="identification", how="left")
适配说明
- 该方案天然支持多个不同
identification值的批量处理,无需额外调整逻辑 - 可以根据你的实际空值格式(空字符串/NaN/None)调整筛选条件即可正常运行
内容的提问来源于stack exchange,提问作者LaGabriella
相关产品推荐
相关产品推荐

