Willem
Willem

Reputation: 630

Pandas locate minimum of DataFrame matrix: index, col

I'd like to get the index and column name of the minimum value in a pandas DataFrame across all rows and all columns.

I've tried .idxmin but this seems to only work when applied on a column. Ideally the function is a one-liner that doesn't require loops. It seems like a very common problem, but I haven't found a solution yet.

My DataFrame:

      col0, col1, col2
index0 1     2     3 
index1 2     3     4
index2 5     6     7

I'd like to get the index and column for the minimum value across matrix: 1.

so:

some_func(df) = (index0,col0)

Upvotes: 6

Views: 2411

Answers (2)

piRSquared
piRSquared

Reputation: 294218

Numpy and divmod

i, j = divmod(np.argmin(np.ravel(df)), df.shape[1])

(df.index[i], df.columns[j])

('index0', 'col0')

Upvotes: 2

Andy L.
Andy L.

Reputation: 25239

Try this:

df.stack().idxmin()

Out[108]: ('index0', 'col0')

Upvotes: 12

Related Questions