用Python来解决一个实际问题

2024-05-05 20:47:03 浏览数 (3)

用Python解决下面的问题:读取data.csv,里面有学号、姓名、年龄、身高,请输出同样年龄时,身高的最大值,以及对应的学号和姓名

为了解决这个问题,我们可以使用Python的pandas库来读取CSV文件,并对数据进行分组和聚合操作。下面是一个可能的解决方案:

  1. 导入必要的库。
  2. 读取CSV文件。
  3. 使用groupby函数按年龄分组。
  4. 使用agg函数或apply函数计算每个年龄组的身高最大值,并保留对应的学号和姓名(这里可能需要一些额外的逻辑来找到与最大值对应的行)。

但是,由于agg函数对于非数值列(如学号和姓名)的聚合并不直接支持返回原始值,我们可能需要两步操作:首先找到每个年龄组的身高最大值,然后基于这个最大值找到对应的行。

以下是实现这个逻辑的Python代码:

代码语言:python代码运行次数:0复制
import pandas as pd  
  
# 读取CSV文件  
df = pd.read_csv('data.csv')  
  
# 首先,找到每个年龄组的身高最大值  
max_heights = df.groupby('年龄')['身高'].max().reset_index()  
  
# 为了找到与最大值对应的学号和姓名,我们可以使用merge操作(基于年龄和身高)  
# 注意:如果有多个人在同一年龄有相同的最大身高,这将返回所有这些人  
result = df.merge(max_heights, on=['年龄', '身高'], how='inner')  
  
# 输出结果  
print(result[['学号', '姓名', '年龄', '身高']])

注意:

  • 如果CSV文件中的列名包含空格或特殊字符,你可能需要在读取时使用header参数指定列名,或者使用rename方法重命名列。
  • 如果CSV文件的编码不是UTF-8(例如GBK或GB2312),你可能需要在read_csv函数中指定encoding参数。
  • 如果存在多个人在同一年龄有相同的最大身高,上述代码将返回所有这些人的信息。如果你只想要一个结果(例如,第一个找到的结果),你可能需要在合并后使用drop_duplicates或其他方法来进一步处理数据。

0 人点赞