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

如何用Pandas实现基于C_p序列均值的船舶停泊状态判定?

船舶停泊状态判定的Pandas/Numpy实现问题

数据与规则说明

  • 现有Pandas DataFrame包含Index、Group、C_p三列:
    • 索引1-6的Group为1,C_p值依次为27、85、83、78、66、47
    • 索引7-9的Group为3,C_p值依次为82、80、66
  • C_p为船舶停泊置信系数,判定规则:

    若一段连续数据的C_p均值≥80,且序列长度≥3,则该序列内的所有行标记为停泊状态(is_parked=1),其余为0。

    • 示例:索引2-4的序列均值为82.67,满足条件需标记为1;索引7-8序列均值达标但长度仅2,不满足条件。

现有尝试的代码逻辑

最初尝试的逻辑(未适配Pandas):

for i in range(n - 2): # n is the element number of a group
    avg = (C_p[i] + C_p[i+1] + C_p[i+2]) / 3
    if avg >= 80:
        is_parked[i] = is_parked[i+1] = is_parked[i+2] = 1 # default value of is_parked is 0

后续调整的逻辑,但时间复杂度为O(n³),性能极差:

for i in range(n):
    thisSUM = C_p[i]
    for j in range(i+1, n):
        thisSUM += C_p[j]
        avg = thisSUM / (j - i + 1)
        if avg >= 80 and j - i + 1 >= 3:
            for k in range(i, j+1):
                is_parked_check[k] = 1

核心问题

  1. 是否可以用Pandas高效实现该判定逻辑?
  2. 若Pandas不合适,是否应改用Numpy或其他工具实现?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 02:59:54