gpt4 book ai didi

python - 返回 Pandas 数据系列中第 n 个最大值的索引和列名

转载 作者:太空宇宙 更新时间:2023-11-04 05:14:16 27 4
gpt4 key购买 nike

我如何(对于比提供的示例大得多的矩阵有效地)返回第 n 最大或最小值的列名和索引(或行名)

import pandas as pd
import numpy as np

dates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
matrix = df.corr()
matrix
A B C D
A 1.000000 -0.814913 0.495993 -0.880296
B -0.814913 1.000000 -0.211421 0.551441
C 0.495993 -0.211421 1.000000 -0.414037
D -0.880296 0.551441 -0.414037 1.000000

然后我会做一些事情,比如

def get_n_smallest(matrix, n):
# can return as two variables, list, tuple, whatever...
return row_name, col_name

get_n_smallest(matrix,0)
# would return D, A for the value -.880296

最佳答案

我想你可以使用 stack对于 Series,然后通过 drop_duplicates 删除重复项, sort_values并通过索引 index 获取 MultiIndex 值:

np.random.seed(100)
dates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
matrix = df.corr()
print (matrix)
A B C D
A 1.000000 0.570860 -0.558334 -0.434793
B 0.570860 1.000000 -0.358834 -0.564178
C -0.558334 -0.358834 1.000000 0.170589
D -0.434793 -0.564178 0.170589 1.000000

print (matrix.stack().drop_duplicates().sort_values())
B D -0.564178
A C -0.558334
D -0.434793
B C -0.358834
C D 0.170589
A B 0.570860
A 1.000000
dtype: float64

def get_n_smallest(matrix, n):
return matrix.stack().drop_duplicates().sort_values().index[n]

print (get_n_smallest(matrix,0))
('B', 'D')

print (get_n_smallest(matrix,1))
('A', 'C')

print (get_n_smallest(matrix,2))
('A', 'D')

def get_n_largest(matrix, n):
return matrix.stack().drop_duplicates().sort_values(ascending=False).index[n]


print (get_n_largest(matrix,0))
('A', 'A')

print (get_n_largest(matrix,1))
('A', 'B')

print (get_n_largest(matrix,2))
('C', 'D')

关于python - 返回 Pandas 数据系列中第 n 个最大值的索引和列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42165909/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com