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

基于DataFrame的输入值按规则分配至小时桶的Python实现需求

没问题,我来帮你实现这个Excel里的分配逻辑,用Python的pandas就能轻松搞定。咱们先理清楚核心逻辑:要做4次迭代,每次找到当前mins值最高的桶(如果多个值相同就取第一个),给它的计数i加1,再把mins除以新的i值。

完整代码实现

import pandas as pd

# 初始化你提供的DataFrame
df = pd.DataFrame({
    'p_hourly': ['2020-09-10 07:00:00', '2020-09-10 08:00:00', '2020-09-10 09:00:00', '2020-09-10 10:00:00'],
    'mins': [60.0, 60.0, 60.0, 0.0]
})

# 给每个桶添加初始计数i,默认都是1
df['i'] = 1

# 执行4次分配迭代
for _ in range(4):
    # 找到当前mins最大的行索引,idxmax会自动返回第一个最大值的索引
    max_mins_idx = df['mins'].idxmax()
    
    # 更新该桶的i值:加1
    new_i = df.loc[max_mins_idx, 'i'] + 1
    df.loc[max_mins_idx, 'i'] = new_i
    
    # 更新该桶的mins值:原mins除以新的i
    df.loc[max_mins_idx, 'mins'] = df.loc[max_mins_idx, 'mins'] / new_i

# 输出最终结果
print(df)

代码解释

  1. 初始化DataFrame:完全按照你给出的结构创建示例数据,确保和你的输入一致。
  2. 添加初始计数列:新增i列,所有值设为1,对应每个桶的初始状态。
  3. 循环迭代分配:
    • 用df['mins'].idxmax()快速定位当前mins最大的行,这个方法天然支持“值相同取第一个”的需求,正好符合你的规则。
    • 先更新该桶的i值(加1),再用新的i值重新计算mins。
  4. 输出结果:最终会得到和Excel逻辑完全一致的分配结果。

运行这段代码后,你会得到如下输出:

p_hourly  mins  i
0  2020-09-10 07:00:00  10.0  3
1  2020-09-10 08:00:00  30.0  2
2  2020-09-10 09:00:00  30.0  2
3  2020-09-10 10:00:00   0.0  1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:43:41