我有一个以CountryName为索引的数据框,以其GDP的值作为列。我正在尝试查找GDP最高的国家之前的索引(国家名称)。
CountryName GDP
US 350
UK 370
Australia 340
Germany 500
France 450
如果我这样做,df['GDP'].idxmax()
,它将返回Germany
。但是,有没有一种简单的方法可以返回Australia
? (最大索引之前的索引)。
答案 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
。