如何在最大值索引 idxmax() 之前找到索引?

我有一个以 CountryName 为索引的数据框,并将其 GDP 的值作为列。我试图找到最大 GDP 国家之前的指数(国家名称)。


CountryName   GDP 

US             350

UK             370 

Australia      340 

Germany        500 

France         450

如果我这样做,df['GDP'].idxmax()它会返回Germany。但是有没有简单的返回方法Australia?(最大索引之前的索引)。


料青山看我应如是
浏览 253回答 3
3回答

隔江千里

shift在这种情况下,数据帧的方法可以帮助您解决问题。# Initialize dataframeimport pandas as pddf = pd.DataFrame({    'CountryName': ['US', 'UK', 'Australia', 'Germany', 'France'],    'GDP': [350, 370, 340, 500, 450],})df = df.set_index('CountryName')# Get the index value of the row directly before the row with max 'GDP' valuetarget = df['GDP'].shift(-1).idxmax()结果如下:In [1]: targetOut[1]: 'Australia'

繁华开满天机

您可以使用np.ndarray.argmax索引并为其编制索引:res = df.index[df['GDP'].values.argmax() - 1]  # Australia

梦里花落0921

这行得通吗?df = pd.DataFrame({'CountryName': ['US', 'UK', 'Australia', 'Germany', 'France'], 'GDP': [350, 370, 340, 500, 450]})print(df['CountryName'][df['GDP'].idxmax()-1])# Australia我可以看到的一个问题是,最高的GDP索引0是否会返回数据框中的CountryName位置-1或最后一个国家/地区。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python