我有一个像这样的数据框:
$(window).load(function(){
// possibly set radio boxes here...
// ...or better still do everything inside the timeout function, thereby solving both problems at once:
setTimeout(function(){ alert("I really want my page to do this"); }, 3000);
}
我希望数据框返回最大值为每年的月份和值:
Year Month Value
2017 1 100
2017 2 1
2017 4 2
2018 3 88
2018 4 8
2019 5 87
2019 6 1
我尝试过类似year month value
2017 1 100
2018 3 88
2019 5 87
的操作,但是它返回了完整的数据集,因为每个“年/月”对都是唯一的(我相信)。
答案 0 :(得分:2)
您可以使用.groupby(...).idxmax()
获取最高值所在的索引,并使用它来索引原始数据帧:
In [28]: df.loc[df.groupby("Year")["Value"].idxmax()]
Out[28]:
Year Month Value
0 2017 1 100
3 2018 3 88
5 2019 5 87
答案 1 :(得分:0)
以下是一种解决方案,还可以处理重复的可能性:
m = df.groupby('Year')['Value'].transform('max') == df['Value']
dfmax = df.loc[m]
完整示例:
import pandas as pd
data = '''\
Year Month Value
2017 1 100
2017 2 1
2017 4 2
2018 3 88
2018 4 88
2019 5 87
2019 6 1'''
fileobj = pd.compat.StringIO(data)
df = pd.read_csv(fileobj, sep='\s+')
m = df.groupby('Year')['Value'].transform('max') == df['Value']
print(df[m])
Year Month Value
0 2017 1 100
3 2018 3 88
4 2018 4 88
5 2019 5 87