Retornar lista de índices / índices em que um valor mínimo / máximo ocorre em um dataframe do pandas
Eu gostaria de procurar um pandaDataFrame
para valores mínimos. Eu preciso do min em todo o quadro de dados (em todos os valores) análogo aodf.min().min()
. No entanto, também preciso conhecer o índice do (s) local (is) em que esse valor ocorre.
Eu tentei várias abordagens diferentes:
df.where(df == (df.min().min()))
,df.where(df == df.min().min()).notnull()
(fonte) eval_mask = df == df.min().min(); df[val_mask]
(fonte)Eles retornam um quadro de dados de NaNs em valores não min / booleanos, mas não consigo descobrir uma maneira de obter a (linha, col) desses locais.
Existe uma maneira mais elegante de pesquisar um quadro de dados por um mínimo / máximo e retornar uma lista contendo todos os locais das ocorrências?
import pandas as pd
keys = ['x', 'y', 'z']
vals = [[1,2,-1], [3,5,1], [4,2,3]]
data = dict(zip(keys,vals))
df = pd.DataFrame(data)
list_of_lowest = []
for column_name, column in df.iteritems():
if len(df[column == df.min().min()]) > 0:
print(column_name, column.where(column ==df.min().min()).dropna())
list_of_lowest.append([column_name, column.where(column ==df.min().min()).dropna()])
list_of_lowest
output: [['x', 2 -1.0
Name: x, dtype: float64]]