基于UUID聚合Pandas DataFrame:合并行并处理时间与数值列
Pandas 按UUID聚合数据的实现方案
需求说明
- 基于
UUID对DataFrame分组,将同一UUID的多行记录合并为一行 - 开始时间取分组内的最早值
- 结束时间取分组内的最晚值
- 其余所有数值列执行求和运算
代码实现
首先确保时间列是datetime类型(若原始数据未转换):
import pandas as pd # 转换时间列格式(按需执行) df['开始时间'] = pd.to_datetime(df['开始时间']) df['结束时间'] = pd.to_datetime(df['结束时间'])
然后定义聚合规则并执行分组聚合:
# 初始化聚合规则字典 agg_rules = { '开始时间': 'min', '结束时间': 'max' } # 自动识别数值列,添加求和规则 for col in df.columns: if col not in ['UUID', '开始时间', '结束时间'] and df[col].dtype in ('int64', 'float64'): agg_rules[col] = 'sum' # 分组聚合并重置索引 result_df = df.groupby('UUID').agg(agg_rules).reset_index()
说明
- 先转换时间列格式是为了保证
min/max能正确计算时间早晚 - 自动遍历列添加求和规则,避免手动指定所有数值列,适配不同结构的数据集
内容的提问来源于stack exchange,提问作者Abhinandan Kumar
相关产品推荐
相关产品推荐

