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

如何在Python中计算鱼类跨日期昼夜时段的累计游动距离

解决跨日期昼夜时段的鱼类游动距离累计问题

需求与问题背景

需要计算研究期间鱼类每个独立昼夜时段的累计游动距离,现有包含以下字段的DataFrame:

  • Dates:记录日期
  • Covered Distance:游动距离(单位:km)
  • DayNight:标记时段为昼(Day)或夜(Night)

示例数据:

Dates     Covered Distance   DayNight
0     2019-08-12      1              Day
1     2019-08-12      2              Night
2     2019-08-12      1              Night
3     2019-08-12      2              Night
4     2019-08-13      3              Night
5     2019-08-13      4              Night
6     2019-08-13      2              Day
7     2019-08-13      1              Day
8     2019-08-13      2              Night
9     2019-08-14      2              Night
10    2019-08-14      3              Night
10    2019-08-14      1              Day
....

此前尝试的代码仅能计算所有昼/夜的总累计距离,无法区分跨日期的独立昼夜时段:

Df2 = Df1.groupby('DayNight').Distance.sum()
# 或者
Df2 = Df1.groupby('DayNight').cumsum().reset_index()

核心痛点:单个夜晚可能跨越两个日期,必须为每个独立的昼夜时段分配唯一编号,才能实现精准分组累计。

解决方案

步骤1:识别昼夜时段切换点

通过对比当前行与前一行的DayNight值,标记时段切换的位置:

# 生成切换标记:当前行与前一行DayNight不同时标记为1
Df1['period_switch'] = (Df1['DayNight'] != Df1['DayNight'].shift(1)).astype(int)

步骤2:生成唯一时段ID

对切换标记做累加操作,得到每个独立昼夜时段的唯一ID:

# 累加切换标记,生成每个时段的唯一ID
Df1['period_id'] = Df1['period_switch'].cumsum()

步骤3:分组计算累计距离

基于period_id和DayNight分组,计算每个独立时段的累计游动距离:

# 分组求和,得到每个独立时段的累计距离
result = Df1.groupby(['period_id', 'DayNight'])['Covered Distance'].sum().reset_index()

可选:补充时段日期范围

如果需要明确每个时段的起止日期,可以扩展聚合逻辑:

result = Df1.groupby(['period_id', 'DayNight']).agg(
    total_distance=('Covered Distance', 'sum'),
    start_date=('Dates', 'min'),
    end_date=('Dates', 'max')
).reset_index()

最终结果示例

处理后将得到包含每个独立昼夜时段累计距离的DataFrame:

period_id DayNight  total_distance start_date   end_date
0          1      Day               1 2019-08-12 2019-08-12
1          2    Night               8 2019-08-12 2019-08-13
2          3      Day               3 2019-08-13 2019-08-13
3          4    Night               7 2019-08-13 2019-08-14
4          5      Day               1 2019-08-14 2019-08-14

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:40:27