Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get Row and Column with Minimum value in Entire Pandas DataFrame

Tags:

python

pandas

The problem is simple and so must be solution but I am not able to find it.

I want to find which row and column in Pandas DataFrame has minimum value and how much is it.

I have tried following code (in addition to various combinations):

df = pd.DataFrame(data=[[4,5,6],[2,1,3],[7,0,5],[2,5,3]], 
                 index = ['R1','R2','R3','R4'], 
                 columns=['C1','C2','C3'])

print(df)

print(df.loc[df.idxmin(axis=0), df.idxmin(axis=1)])

The dataframe (df) being searched is:

    C1  C2  C3
R1   4   5   6
R2   2   1   3
R3   7   0   5
R4   2   5   3

Output for the loc command:

    C1  C2  C2  C1
R2   2   1   1   2
R3   7   0   0   7
R2   2   1   1   2

What I need is:

    C2
R3   0

How can I get this simple result?

like image 968
rnso Avatar asked Oct 19 '25 08:10

rnso


1 Answers

Use:

a, b = df.stack().idxmin()
print(df.loc[[a], [b]])
    C2
R3   0

Another @John Zwinck solution working with missing values - use numpy.nanargmin:

df = pd.DataFrame(data=[[4,5,6],[2,np.nan,3],[7,0,5],[2,5,3]], 
    index = ['R1','R2','R3','R4'], 
    columns=['C1','C2','C3'])

print(df)
    C1   C2  C3
R1   4  5.0   6
R2   2  NaN   3
R3   7  0.0   5
R4   2  5.0   3

#https://stackoverflow.com/a/3230123
ri, ci = np.unravel_index(np.nanargmin(df.values), df.shape)
print(df.iloc[[ri], [ci]])
     C2
R3  0.0
like image 191
jezrael Avatar answered Oct 21 '25 21:10

jezrael



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!