I am trying to get the max value from a panda dataframe as whole. I am not interested in what row or column it came from. I am just interested in a single max value within the DataFrame.
Here is my DataFrame:
df = pd.DataFrame({'group1': ['a','a','a','b','b','b','c','c','d','d','d','d','d'],
'group2': ['c','c','d','d','d','e','f','f','e','d','d','d','e'],
'value1': [1.1,2,3,4,5,6,7,8,9,1,2,3,4],
'value2': [7.1,8,9,10,11,12,43,12,34,5,6,2,3]})
This is what it looks like:
group1 group2 value1 value2 0 a c 1.1 7.1 1 a c 2.0 8.0 2 a d 3.0 9.0 3 b d 4.0 10.0 4 b d 5.0 11.0 5 b e 6.0 12.0 6 c f 7.0 43.0 7 c f 8.0 12.0 8 d e 9.0 34.0 9 d d 1.0 5.0 10 d d 2.0 6.0 11 d d 3.0 2.0 12 d e 4.0 3.0
Expected output:
43.0
I was under the assumption that df.max() would do this job but it returns a max value for each column but I am not interested in that. I need the max from an entire dataframe.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
The max of all the values in the DataFrame can be obtained using df.to_numpy().max(), or for pandas < 0.24.0 we use df.values.max():
In [10]: df.to_numpy().max() Out[10]: 'f'
The max is f rather than 43.0 since, in CPython2,
In [11]: 'f' > 43.0 Out[11]: True
In CPython2, Objects of different types … are
ordered by their type names. So any str compares as greater than any int since 'str' > 'int'.
In Python3, comparison of strings and ints raises a TypeError.
To find the max value in the numeric columns only, use
df.select_dtypes(include=[np.number]).max()
Method 2
Hi the simplest answer is the following.
Answer:
df.max().max()
Explanation: series = df.max() give you a Series containing the maximum values for each column.
Therefore series.max()gives you the maximum for the whole dataframe.
🙂 best answers are usually the simplest
Method 3
An alternative way:
df.melt().value.max()
Essentially melt() transforms the DataFrame into one long column.
Method 4
For the max, check the previous answer…
For the max of the values use e.g.:
val_cols = [c for c in df.columns if c.startswith('val')]
print df[val_cols].max()
Method 5
Max can be found in these two steps:
maxForRow = allData.max(axis=0) #max for each row globalMax = maxForRow.max(); #max across all rows
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0