繁体   English   中英

从 pandas DataFrame 中的过滤值中获取最大值? - Python, Pandas

[英]Getting the maximum value from filtered values in pandas DataFrames? - Python, Pandas

我想过滤到星期一的日子并获得星期一的最大 OverallGrade。 或者我为它制作了一个新的数据框,它显示了预期的答案 90,但是有没有办法在不创建新的数据框的情况下做到这一点?

当看到最终结果时,我还需要看到学生 ID,如 alt 解决方案所示,而且我不想使用天数作为索引并为此再次重置索引! (实际上,我将日期作为日期,不想将它们用作索引,为了简单起见,这里只是转换为日期名称)

import pandas as pd

ClassData = {
  "Days":         ["Monday","Wednesday","Monday","Friday","Tuesday","Monday","Friday"],
  "OverallMarks": [   150,     140,       180,      250,      200 ,    240,     170  ],
  "OverallGrade": [    70,      60,        90,      110,       85 ,     80,      71  ],
  "StudentID" :   ['a','b', 'c', 'd', 'e', 'f', 'g']
}

MyDataFrame1 = pd.DataFrame(ClassData)

# Alternate Solution I use - Creating a new Dataframe for only the mondays
NewDataFrame = MyDataFrame1[ MyDataFrame1['Days'] == "Monday" ] # Gets all Mondays
print( NewDataFrame[ NewDataFrame['OverallGrade'] == int(NewDataFrame['OverallGrade'].max()) ][['StudentID','OverallGrade']] ) 
# Gets max grade as 90 and shows the student id and grade

  • “星期一”的第一个 select,就像你一样
  • 然后根据“OverallGrade”对其进行降序排序
  • Select 第一个元素
print( MyDataFrame1[ MyDataFrame1['Days'] == "Monday" ].sort_values(by='OverallGrade', ascending=False).iloc[0])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM