如何获取DataFrame中2015与1990列差值最大的国家名称?
解决方法
先修正你代码里的两个明显问题:
- 你写了
df['2020'],但你的DataFrame里只有2015列,这是笔误; - 你要的是差值的最大值(看例子里Germany的40-7=33是最大的),如果不需要绝对值就去掉
.abs(),要是想找变化幅度最大的(不管正负)再保留这个方法。
下面是两种不用新增列、直接拿到国家名称的写法:
写法一:通过索引定位国家
# 先算差值,取最大值对应的行索引,再提取该行的Country值 max_diff_country = df.loc[(df['2015'] - df['1990']).idxmax(), 'Country'] print(max_diff_country)
写法二:直接取差值最大的行
# 按差值排序后取第一行的Country max_diff_country = df.nlargest(1, lambda row: row['2015'] - row['1990'])['Country'].iloc[0]
如果你的需求是找绝对值最大的差值(比如某个国家数值下降很多,绝对值比增长的还大),只需要在计算差值时加.abs():
max_abs_diff_country = df.loc[(df['2015'] - df['1990']).abs().idxmax(), 'Country']
这几种方法都不用新增列,直接返回你要的国家名称字符串。
内容的提问来源于stack exchange,提问作者Amirtak
相关产品推荐
相关产品推荐

