为了解决这个问题,你可以使用Python的pandas库来读取CSV文件,并使用分组和聚合操作来找到每个年龄组中身高的最大值及其对应的学号和姓名。
以下是一个示例代码,展示了如何完成这个任务:
import pandas as pd
读取CSV文件
df = pd.read_csv('data.csv')
确保年龄列是数值类型,如果不是,需要转换为数值类型
例如,如果年龄是字符串类型,可以使用 df['年龄'] = pd.to_numeric(df['年龄'], errors='coerce')
使用groupby对年龄进行分组,并使用agg进行聚合操作
agg中使用了idxmax找到最大值所在的索引,然后再使用这些索引找到对应的姓名和学号
grouped = df.groupby('年龄').agg({
'身高': ['max'], # 找到每个年龄组的身高最大值
'学号': ['idxmax'] # 找到身高最大值对应的学号的索引
}).reset_index()
重命名列以便更清晰
grouped.columns = ['年龄', '身高_最大值', '身高最大值_学号_索引']
使用merge操作将学号和姓名合并回来
result = pd.merge(grouped, df[['学号', '姓名', '年龄']],
left_on=['年龄', '身高最大值_学号_索引'],
right_on=['年龄', '学号'],
how='left').drop(columns=['身高最大值_学号_索引', '年龄_y'])
重命名列以便更清晰
result.rename(columns={'年龄_x': '年龄', '学号_x': '学号'}, inplace=True)
输出结果
print(result)
注意:这段代码假设CSV文件中的列名分别为'学号'、'姓名'、'年龄'和'身高'(注意列名中的空格或特殊字符可能需要相应调整)。此外,如果年龄列不是数值类型,你需要先将其转换为数值类型(如上面的注释所示)。
这段代码首先读取CSV文件,然后对年龄进行分组并找到每个组的身高最大值及其对应的学号索引。接着,它使用merge操作将这些索引与原始数据表合并,以找到对应的姓名。最后,它输出包含年龄、身高最大值、对应学号和姓名的结果表。
本文来自投稿,不代表本站立场,如若转载,请注明出处:https://typecho.firshare.cn/archives/3961.html
免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。避免网络欺诈,本站不倡导任何交易行为。如您私自与本站转载自公开互联网中的资讯内容中提及到的个人或平台产生交易,则需自行承担后果。本站在注明来源的前提下推荐原文至此,仅作为优良公众、公开信息分享阅读,不进行商业发布、发表及从事营利性活动。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。