2
Wie kann ich (effizient für eine Matrix viel größer als das Beispiel vorausgesetzt) den Spaltennamen und Index (oder Zeilennamen) des n
th größten oder kleinster WertGibt den Index und den Spaltennamen des n-ten größten Wertes in einer Pandas-Datenreihe zurück
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
dann würde ich etwas tun, wie
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
@JohnGalt dann aber nur das ist die niedrigste, nicht die n-te niedrigste – thefoxrocks
stimmt, wie etwa 'matrix.unstack() sort_values () index [.. n-1] 'für n-kleinste? – Zero