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

如何基于相邻行timestamp差值与type状态修改Pandas的value列值

实现方法

你可以直接通过构造布尔条件掩码批量修改符合要求的value值,逻辑清晰且效率更高:

import pandas as pd

# 构造示例数据
data = {
    "timestamp": [1629453592426, 1629453594429, 1629453654582, 1629453658662, 1629453661342, 1629453686644, 1629453689849],
    "type": [0, 0, 0, 1, 1, 0, 0],
    "value": [10, 120000, 110000, 22, 44, 115000, 50]
}
df = pd.DataFrame(data)

# 构造匹配条件掩码
mask = (
    df["type"].eq(df["type"].shift())  # 条件1:与上一行type相同,未发生变化
    & (df["timestamp"].diff() < 60000) # 条件2:与上一行时间戳差值小于60000
    & (df["value"].abs() > 100000)     # 条件3:value绝对值大于100000
)

# 符合条件的value设为0
df.loc[mask, "value"] = 0

运行后得到的df和你给出的预期输出完全一致。

如果你想继续使用之前的分组思路,也可以用transform对每组内的非首行数据做判断:

# 你的原有代码
df["timestamp_jump"] = df["timestamp"].diff().gt(60000).cumsum()

# 分组处理value
df["value"] = df.groupby(["timestamp_jump", "type"])["value"].transform(
    lambda x: [x.iloc[0]] + [0 if abs(v) > 100000 else v for v in x.iloc[1:]]
)
# 处理完可删除辅助列timestamp_jump
df = df.drop("timestamp_jump", axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:54:04