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

如何在Day.Number列当前行值小于上一行时合并对应两行数据

实现逻辑

  • 逐行遍历数据集,若当前行Day.Number小于上一行的Day.Number,则合并两行
  • 合并规则:Day.Number取两行最大值,其余数值列取两行对应值之和
  • 合并完成后跳过当前行,继续后续判断

代码实现(Python + Pandas)

import pandas as pd

# 构造示例数据集,你也可以替换为read_csv读取本地文件
data = {
    "Day.Number": [1, 2, 3, 1, 2],
    "Steps": [3800, 7372, 10259, 1798, 5193],
    "Sleep": [6622, 33346, 10914, 8298, 14859],
    "Moderate": [5631, 8499, 11750, 2667, 6795],
    "Vigorous": [32, 0, 73, 0, 0]
}
df = pd.DataFrame(data)

# 合并处理逻辑
res = []
for _, row in df.iterrows():
    if not res:
        res.append(row.to_dict())
        continue
    last = res[-1]
    if row["Day.Number"] < last["Day.Number"]:
        # 符合合并条件,替换最后一行为合并结果
        res[-1] = {
            "Day.Number": max(last["Day.Number"], row["Day.Number"]),
            "Steps": last["Steps"] + row["Steps"],
            "Sleep": last["Sleep"] + row["Sleep"],
            "Moderate": last["Moderate"] + row["Moderate"],
            "Vigorous": last["Vigorous"] + row["Vigorous"]
        }
    else:
        res.append(row.to_dict())

# 输出结果
result = pd.DataFrame(res)
print(result)

运行输出

Day.Number  Steps  Sleep  Moderate  Vigorous
0           1   3800   6622      5631        32
1           2   7372  33346      8499         0
2           3  12057  19212     14417        73
3           2   5193  14859      6795         0

内容的提问来源于stack exchange,提问作者Miguel Angel Numa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:27:04