You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas小时数据处理:计算早7点-12点时段的金额总和

问题与高效解决方案

原始数据

现有小时级Pandas DataFrame如下:

DATE      TIME     Amount 
2022-11-07  21:00:00         10      
2022-11-07  22:00:00         11      
2022-11-08  07:00:00         10       
2022-11-08  08:00:00         13       
2022-11-08  09:00:00         12     
2022-11-08  10:00:00         11       
2022-11-08  11:00:00         13      
2022-11-08  12:00:00         12        
2022-11-08  13:00:00         10        
2022-11-08  14:00:00         9       
... 

需求

新增sum_morning列,仅在每日12:00:00的行中填入当日07:00:00-12:00:00时段Amount的总和,其余行填充NaN。预期结果:

DATE      TIME     Amount      sum_morning
2022-11-07  21:00:00         10      NaN
2022-11-07  22:00:00         11      NaN
2022-11-08  07:00:00         10      NaN
2022-11-08  08:00:00         13      NaN
2022-11-08  09:00:00         12      NaN
2022-11-08  10:00:00         11      NaN
2022-11-08  11:00:00         13      NaN
2022-11-08  12:00:00         12      71  
2022-11-08  13:00:00         10      NaN  
2022-11-08  14:00:00         9       NaN
... 

注:数据存在时间间隙(如22:00-07:00无数据),shift等依赖连续行的方法不适用;已掌握「筛选时段数据→按日期分组求和→合并回原DataFrame」的方案,需更高效实现。

高效实现方案

直接通过分组+条件映射+赋值完成,无需额外合并操作,性能更优:

代码示例

import pandas as pd

# 构造示例数据
data = {
    'DATE': ['2022-11-07', '2022-11-07', '2022-11-08', '2022-11-08', '2022-11-08', 
             '2022-11-08', '2022-11-08', '2022-11-08', '2022-11-08', '2022-11-08'],
    'TIME': ['21:00:00', '22:00:00', '07:00:00', '08:00:00', '09:00:00', 
             '10:00:00', '11:00:00', '12:00:00', '13:00:00', '14:00:00'],
    'Amount': [10, 11, 10, 13, 12, 11, 13, 12, 10, 9]
}
df = pd.DataFrame(data)

# 1. 先计算每个日期7-12点的Amount总和,得到日期与总和的映射字典
morning_sum_map = df[df['TIME'].str[:2].astype(int).between(7,12)]\
    .groupby('DATE')['Amount'].sum().to_dict()

# 2. 初始化sum_morning列为NaN,仅对12:00的行填充对应日期的总和
df['sum_morning'] = pd.NA
df.loc[df['TIME'] == '12:00:00', 'sum_morning'] = df.loc[df['TIME'] == '12:00:00', 'DATE'].map(morning_sum_map)

方案优势

  1. 性能最优:仅遍历数据两次(一次计算总和映射,一次赋值),无冗余操作,大数据量下比合并方案效率提升明显;
  2. 逻辑清晰:拆分计算与赋值步骤,易于理解和维护;
  3. 兼容性强:不受时间间隙影响,无论时段内是否有数据缺失,都能准确统计当日目标时段的总和。

内容的提问来源于stack exchange,提问作者RazzleDazzle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:40:34