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

时间:2018-12-11 21:58:25

标签: python pandas

我有一个以CountryName为索引的数据框,以其GDP的值作为列。我正在尝试查找GDP最高的国家之前的索引(国家名称)。

CountryName   GDP 
US             350
UK             370 
Australia      340 
Germany        500 
France         450

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

3 个答案:

答案 0 :(得分:2)

在这种情况下,数据框的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'

答案 1 :(得分:1)

您可以使用np.ndarray.argmax并为索引建立索引:

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

答案 2 :(得分:0)

这行吗?

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