在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 中的任何位置查找值索引