如何在Python DataFrame中按id、日期、时间对数值求和汇总?
按id、日期、时间分组求和的实现方法
你可以通过Pandas的groupby结合sum()方法快速实现需求,具体步骤如下:
1. 构造原数据(你提供的代码)
import pandas as pd df = pd.DataFrame() df['id'] = [1, 1, 1, 2, 2,3, 3] df['day'] = ['2013-07-10', '2013-07-10', '2013-07-10','2014-02-27','2014-02-27', '2014-02-27', '2014-02-27'] df['time'] = ['17:00:00', '17:00:00', '18:30:00','18:30:00','18:30:00', '06:30:00', '06:30:00' ] df['val'] = [1, 5,9,2,5,8,5]
2. 分组求和代码
# 按id、day、time分组,对val列求和,重置索引恢复列结构 result_df = df.groupby(['id', 'day', 'time'])['val'].sum().reset_index()
3. 输出结果
执行上述代码后,result_df的内容与你期望的输出一致:
id day time val 0 1 2013-07-10 17:00:00 6 1 1 2013-07-10 18:30:00 9 2 2 2014-02-27 18:30:00 7 3 3 2014-02-27 06:30:00 13
代码说明
groupby(['id', 'day', 'time']):指定以这三列的组合作为分组依据,相同组合的行会被归为一组['val'].sum():仅对val列执行求和操作,避免其他列被不必要的聚合reset_index():将分组时作为索引的id、day、time重新转为普通列,保证输出结构符合要求
内容的提问来源于stack exchange,提问作者Carlos Jo
相关产品推荐
相关产品推荐

