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

如何编写按自定义时间区间统计照片最大值并输出DataFrame的函数

Pandas函数max_photos实现方案

前置依赖

需要提前导入pandas库:

import pandas as pd

函数代码

def max_photos(df, start, integer):
    # 计算需要生成的区间范围,确保覆盖数据中所有晚于start的年份
    max_data_year = df['Year'].max()
    intervals = []
    current_start = start
    # 生成所有连续区间
    while True:
        current_end = current_start + integer - 1
        intervals.append((current_start, current_end))
        if current_end >= max_data_year:
            break
        current_start = current_end + 1
    
    # 遍历每个区间统计结果
    res_list = []
    for s, e in intervals:
        timeframe = f"{s}-{e}"
        # 筛选当前区间内的记录
        interval_data = df[(df['Year'] >= s) & (df['Year'] <= e)]
        if interval_data.empty:
            res_list.append({
                "Timeframe": timeframe,
                "Max_Year": None,
                "Max_Num_Photos": None
            })
            continue
        # 取照片数最大值对应的行
        max_idx = interval_data['Number_of_photos'].idxmax()
        max_row = interval_data.loc[max_idx]
        res_list.append({
            "Timeframe": timeframe,
            "Max_Year": int(max_row['Year']),
            "Max_Num_Photos": int(max_row['Number_of_photos'])
        })
    return pd.DataFrame(res_list)

测试验证

你可以用以下代码构造测试数据验证效果:

# 构造题目给出的memories DataFrame
memories = pd.DataFrame({
    'Year': [1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2015],
    'Number_of_photos': [27,21,39,22,10,12,22,22,40,27,18,20,18,14,33,10,24,17]
})

# 测试入参start=1998,integer=4
result = max_photos(memories, 1998, 4)
print(result)

输出结果和题目给出的示例完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:39:03