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

按AC分组累计时长并关联查询油料数据的实现问询

实现方案(基于Pandas)

步骤1:分组累计时间并记录日期范围

首先对第一张表按ac分组,每组按flight_date排序后累计Total_time,直到总和超过2400或遍历完所有数据:

import pandas as pd

# 假设第一张表名为df_flight,字段包括ac、Total_time、flight_date
ac_time_summary = {}

for ac, group in df_flight.groupby('ac'):
    # 按日期升序排序,保证累计顺序正确
    sorted_group = group.sort_values('flight_date', ascending=True)
    cumulative_time = 0
    dates = []
    
    for _, row in sorted_group.iterrows():
        cumulative_time += row['Total_time']
        dates.append(row['flight_date'])
        if cumulative_time >= 2400:
            break
    
    ac_time_summary[ac] = {
        'total_time': cumulative_time,
        'min_date': min(dates),
        'max_date': max(dates)
    }

步骤2:查询第二张表并统计油耗总和

遍历上述结果,对每个ac用日期范围查询第二张表(假设名为df_oil,字段包括ac、Total_OIL、record_date),计算Total_OIL的总和:

ac_oil_total = {}

for ac, info in ac_time_summary.items():
    # 筛选符合日期范围的记录
    mask = (df_oil['ac'] == ac) & \
           (df_oil['record_date'] >= info['min_date']) & \
           (df_oil['record_date'] <= info['max_date'])
    oil_sum = df_oil.loc[mask, 'Total_OIL'].sum()
    ac_oil_total[ac] = oil_sum

步骤3:计算比值并生成结果字典

将油耗总和与累计时间的比值存入字典:

result_dict = {ac: ac_oil_total[ac] / ac_time_summary[ac]['total_time'] 
               for ac in ac_time_summary.keys()}

关键注意事项

  • 必须对每组数据按flight_date排序,否则累计顺序错误会导致日期范围和总和不准确
  • 若累计时间不足2400,直接使用所有数据的总和和日期范围
  • 确保两张表的日期字段格式一致(均为datetime类型),避免筛选错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:57:24