【发布时间】:2016-07-19 21:45:58
【问题描述】:
我想在 pandas DataFrame 中搜索最小值。我需要整个数据帧(所有值)中的最小值,类似于df.min().min()。但是,我还需要知道该值出现的位置的索引。
我尝试了许多不同的方法:
-
df.where(df == (df.min().min())), -
df.where(df == df.min().min()).notnull()(source) 和 -
val_mask = df == df.min().min(); df[val_mask](source)。
这些返回非最小值/布尔值的 NaN 数据框,但我无法找到获取这些位置的 (row, col) 的方法。
有没有更优雅的方法来搜索数据框的最小值/最大值并返回包含所有出现位置的列表?
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]]
【问题讨论】:
-
抱歉,您刚刚将以下内容的输出:
df[df==df.max().max()].dropna(axis=1, thresh=1).dropna()转换为列表? -
@EdChum 是的!谢谢,这正是我所追求的。你能解释一下 thresh=1 参数的作用吗?我不明白文档“需要许多非 NA 值”的意思..