从熊猫数据框中返回最大值,而不是基于列或行

时间:2014-07-04 09:27:26

标签: python pandas max 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]})

这就是它的样子:

   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

预期产出:

43.0

我假设df.max()会完成这项工作,但它会返回每列的最大值,但我对此不感兴趣。我需要整个数据帧的最大值。

5 个答案:

答案 0 :(得分:36)

可以使用df.values.max()

获取DataFrame中所有值的最大值
In [10]: df.values.max()
Out[10]: 'f'

在CPython2中,最大值为f而不是43.0,

In [11]: 'f' > 43.0
Out[11]: True

在CPython2中,Objects of different types ... are ordered by their type names。因此,自str以来,任何int都会比任何'str' > 'int'都要大。

在Python3中,字符串和整数的比较会引发TypeError


要仅在数字列中查找最大值,请使用

df.select_dtypes(include=[np.number]).max()

答案 1 :(得分:12)

您最简单的答案如下。 回答:

df.max().max()

说明:
series = df.max()为您提供一个系列,其中包含每列的最大值。
因此series.max()为您提供整个数据帧的最大值。

:)最佳答案通常是最简单的

答案 2 :(得分:1)

Max可以在以下两个步骤中找到:

maxForRow = allData.max(axis=0) #max for each row
globalMax = maxForRow.max(); #max across all rows

答案 3 :(得分:0)

对于最大值,请检查上一个答案... 对于值的最大值,使用例如:

val_cols = [c for c in df.columns if c.startswith('val')]
print df[val_cols].max()

答案 4 :(得分:0)

另一种方法:

df.melt().value.max()

本质上melt()将DataFrame转换为一个长列。