为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

料青山看我应如是 2021-09-14 17:26:54
我有一个以 CountryName 为索引的数据框,并将其 GDP 的值作为列。我试图找到最大 GDP 国家之前的指数(国家名称)。CountryName   GDP US             350UK             370 Australia      340 Germany        500 France         450如果我这样做,df['GDP'].idxmax()它会返回Germany。但是有没有简单的返回方法Australia?(最大索引之前的索引)。
查看完整描述

3 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

shift在这种情况下,数据帧的方法可以帮助您解决问题。


# Initialize dataframe

import pandas as pd

df = 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' value

target = df['GDP'].shift(-1).idxmax()

结果如下:


In [1]: target

Out[1]: 'Australia'


查看完整回答
反对 回复 2021-09-14
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

您可以使用np.ndarray.argmax索引并为其编制索引:

res = df.index[df['GDP'].values.argmax() - 1]  # Australia


查看完整回答
反对 回复 2021-09-14
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

这行得通吗?


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或最后一个国家/地区。


查看完整回答
反对 回复 2021-09-14
  • 3 回答
  • 0 关注
  • 252 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信