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

如何修改Pandas代码实现每日提取第33列的Top3最大值?

解决每日提取Top3最大值的Pandas代码问题

你当前代码存在两个核心问题:

  1. 变量名不统一:第一行读入数据赋值给df_,但后续操作调用的是df,会触发NameError;
  2. agg方法无法直接使用np.head(3):一是numpy没有head方法,二是agg要求传入聚合函数(如max、sum这类输出单个值的函数),而head是取行操作,不属于聚合逻辑。

以下是两种可行的解决方案:

方法一:保留全列数据,提取每组Top3

适合需要保留原数据其他列的场景,通过groupby.apply对每组按目标列降序排序后取前3行:

import pandas as pd
import numpy as np

# 统一变量名,避免报错
df = pd.read_excel(r'file_location.xlsx')
df['Date'] = pd.to_datetime(df['Date'], errors='coerce')

# 定义目标列(第33列)
target_col = df.columns[33]

# 按日期分组,每组按目标列降序排序后取前3行
df_new = df.groupby(pd.Grouper(key="Date", freq="D")).apply(
    lambda x: x.sort_values(by=target_col, ascending=False).head(3)
).reset_index(drop=True)

方法二:仅提取日期与目标列Top3值(更简洁高效)

如果只需要日期和目标列的Top3数据,使用groupby.nlargest直接提取:

import pandas as pd
import numpy as np

df = pd.read_excel(r'file_location.xlsx')
df['Date'] = pd.to_datetime(df['Date'], errors='coerce')

target_col = df.columns[33]

# 按日期分组,提取每组目标列最大的3个值
df_new = df.groupby(pd.Grouper(key="Date", freq="D"))[target_col].nlargest(3).reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:35:17