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

如何基于列值将Pandas DataFrame行不均匀分配到时间戳

问题描述

现有一个包含DateTime(时间戳)和Execution(执行次数)列的Pandas DataFrame,示例输入如下:

DateTime           Execution
0 2023-04-03 07:00:00                   11
1 2023-04-03 11:00:00                   1
2 2023-04-03 12:00:00                   1
3 2023-04-03 14:00:00                   3
4 2023-04-03 18:00:00                   1

该DataFrame共有5080行数据。

需求:仅当Execution值大于4时,将多余的执行次数分配到后续的连续小时时间戳中,且每个小时的Execution最大值为4。处理后的期望输出如下:

DateTime           Execution
0 2023-04-03 07:00:00                   4
1 2023-04-03 08:00:00                   4
2 2023-04-03 09:00:00                   3
3 2023-04-03 11:00:00                   1
4 2023-04-03 12:00:00                   1
5 2023-04-03 14:00:00                   3
6 2023-04-03 18:00:00                   1

此前的均匀分配方案不适用,需实现这种优先填满当前及后续小时(每小时最多4次)的不均匀分配逻辑。

解决方案

可以通过遍历DataFrame,对每个Execution值超过4的行拆分生成新的时间戳和对应执行次数,最后合并所有行得到结果。具体代码实现如下:

import pandas as pd

# 确保DateTime列是datetime类型
df['DateTime'] = pd.to_datetime(df['DateTime'])

# 初始化空列表存储处理后的行
processed_rows = []

for _, row in df.iterrows():
    dt = row['DateTime']
    exec_count = row['Execution']
    
    if exec_count <= 4:
        # 执行次数不超过4,直接保留原行
        processed_rows.append({'DateTime': dt, 'Execution': exec_count})
        continue
    
    # 先给当前时间戳分配4次,计算剩余次数
    remaining = exec_count - 4
    processed_rows.append({'DateTime': dt, 'Execution': 4})
    
    # 依次将剩余次数分配到后续每小时,每次最多4次
    current_dt = dt + pd.Timedelta(hours=1)
    while remaining > 0:
        add_num = min(remaining, 4)
        processed_rows.append({'DateTime': current_dt, 'Execution': add_num})
        remaining -= add_num
        current_dt += pd.Timedelta(hours=1)

# 转换为最终结果DataFrame
result_df = pd.DataFrame(processed_rows)

代码说明

  1. 类型校验:先将DateTime列转换为datetime类型,确保后续时间计算的准确性。
  2. 分情况处理:
    • 若Execution值≤4,直接保留原始行数据;
    • 若Execution值>4,先给当前时间戳分配4次,再将剩余次数按每小时最多4次的规则,依次分配到后续连续的小时时间戳中,直到剩余次数为0。
  3. 结果整合:将所有处理后的行数据合并为新的DataFrame,得到符合需求的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 14:26:06