在python pandas中使用索引查找下一个最大元素

Posted

技术标签:

【中文标题】在python pandas中使用索引查找下一个最大元素【英文标题】:Find next largest element using index in python pandas 【发布时间】:2021-01-25 10:12:25 【问题描述】:

我有列表A = [China, India, France, Italy] 和列表B = [2000, 3000, 3500, 1000]

我使用代码:

B_desc = sorted(B, reverse=True)
max_B = max(B_desc)
idx_max = B.index(max_B)
first_country = A[idx_max] 

查找最大值对应的国家,但不确定如何使用索引查找第二大值的国家。 是否可以循环查找 4 个或更多具有最大值的国家/地区?

【问题讨论】:

当你对 B 进行排序时,最大值只是 B_desc[0],第二个最大值是 B_desc[1] @azro thx 解决方案已经足够好了。如果我想与一个值和循环进行比较怎么办 【参考方案1】:

这可行,但如果 len(A) != len(B) 可能会中断

A = 'China, India, France, Italy'.split(', ')
B = [2000, 3000, 3500, 1000]

C = a:B[i] for i,a in enumerate(A)
sort = sorted(C.keys(),key=C.get,reverse=True)

first = sort[0]
second = sort[1]
# etc

【讨论】:

【参考方案2】:

您最好使用zip 构建对,然后在int 值上反向排序

A = ["China", "India", "France", "Italy"]
B = [2000, 3000, 3500, 1000]

values = sorted(zip(A, B), key=lambda x: x[1], reverse=True)

>>print("Max pair", values[0])
Max pair ('France', 3500)

>>print("Second max pair", values[1])
Second max pair ('India', 3000)

【讨论】:

以上是关于在python pandas中使用索引查找下一个最大元素的主要内容,如果未能解决你的问题,请参考以下文章

Pandas - 在 DataFrame 中的任何位置查找值索引

如何在Pandas数据帧(Python)中查找语料库中最常用的单词

Pandas - 查找和索引与行序列模式匹配的行

pandas层次化索引

全网最完整Python数据分析笔记系列工具篇:Pandas

如何使用 pandas-datareader 从 Yahoo 查找任何索引