ikkkkkk
2021-06-24 21:01
采纳率: 100%
浏览 114

pandas groupby 最大最小值

给定2个csv文件 score.csv     zhiwu.csv

(1) score对象新增一列“总分”,值为前三列成绩之和。

(2) score对象依据“总分”列的值从高到低进行排序。

(3) score对象根据“性别”列进行分组,输出男生、女生各自的平均成绩。

(4) 输出男生的最高总分、女生的最低总分。

(5) score对象新增一列“等级”,总分大于等于270的等级为A,总分小于210分的等级为C,总分介于210到270的等级为B。

(6) 使用merge()函数以“学号”列为关键主键,将score对象与zhiwu对象合并,合并时保留score对象的所有数据行,合并后生成一个新的DataFrame对象students。以students的“学号”列作为新索引,打印输出students。

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

  • CSDN专家-HGJ 2021-06-25 02:25
    最佳回答

    用pandas对数据进行处理。

    df1<span class="hljs-selector-attr">[<span class="hljs-string">'总分'</span>]</span>=df1<span class="hljs-selector-attr">[[<span class="hljs-string">'思政'</span>,<span class="hljs-string">'微积分'</span>,<span class="hljs-string">'大学英语'</span>]</span>]<span class="hljs-selector-class">.sum</span>(axis=<span class="hljs-number">1</span>)
    df1=df1<span class="hljs-selector-class">.sort_values</span>(by=<span class="hljs-string">'总分'</span>,ascending=False,ignore_index=True)
    groups=df1<span class="hljs-selector-class">.groupby</span>(<span class="hljs-string">'性别'</span>)<span class="hljs-selector-attr">[<span class="hljs-string">'总分'</span>]</span><span class="hljs-selector-class">.apply</span>(lambda x:sum(x)/len(x))
    df1<span class="hljs-selector-attr">[df1[<span class="hljs-string">'性别'</span>]</span>==<span class="hljs-string">'男'</span>]<span class="hljs-selector-attr">[<span class="hljs-string">'总分'</span>]</span><span class="hljs-selector-class">.sort_values</span>()<span class="hljs-selector-class">.to_list</span>()<span class="hljs-selector-attr">[-1]</span>
    df1<span class="hljs-selector-attr">[df1[<span class="hljs-string">'性别'</span>]</span> == <span class="hljs-string">'女'</span>]<span class="hljs-selector-attr">[<span class="hljs-string">'总分'</span>]</span><span class="hljs-selector-class">.sort_values</span>()<span class="hljs-selector-class">.to_list</span>()<span class="hljs-selector-attr">[0]</span>
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题