【问题标题】:Find next largest element using index in python pandas在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 解决方案已经足够好了。如果我想与一个值和循环进行比较怎么办

标签: python pandas loops indexing return-value


【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2020-12-05
      • 2021-04-20
      • 2021-07-02
      • 2021-11-07
      • 1970-01-01
      • 2021-06-20
      • 1970-01-01
      • 2012-09-29
      相关资源
      最近更新 更多