Find maximum value of a column and return the corresponding row values using Pandas

dataframe, max, pandas, python

Solution

Assuming `df` has a unique index, this gives the row with the maximum value:

In [34]: df.loc[df['Value'].idxmax()]
Out[34]: 
Country        US
Place      Kansas
Value         894
Name: 7

Note that `idxmax` returns index labels. So if the DataFrame has duplicates in the index, the label may not uniquely identify the row, so `df.loc` may return more than one row.

Therefore, if `df` does not have a unique index, you must make the index unique before proceeding as above. Depending on the DataFrame, sometimes you can use `stack` or `set_index` to make the index unique. Or, you can simply reset the index (so the rows become renumbered, starting at 0):

df = df.reset_index()

Problem

Using Python Pandas I am trying to find the `Country` & `Place` with the maximum value. This returns the maximum value: ``` data.groupby(['Country','Place'])['Value'].max() ``` But how do I get the corresponding `Country` and `Place` name?

Original source

Related problems