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

问题描述 投票:0回答:1

我正试图从一个熊猫数据框架中获取最大的值,我对它来自哪一行或哪一列不感兴趣。我对它来自哪一行或哪一列不感兴趣。我只是对数据框中的一个最大值感兴趣。

这是我的数据框架。

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()可以完成这项工作,但是它为每一列返回一个最大值,但是我对这个不感兴趣。我需要的是整个数据框的最大值。

python pandas dataframe max
1个回答
49
投票

在DataFrame中的所有值的最大值可以通过使用 df.to_numpy().max()pandas < 0.24.0 我们用 df.values.max():

In [10]: df.to_numpy().max()
Out[10]: 'f'

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

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

在CPython2。不同类型的对象......按它们的顺序排列。类型名称. 所以任何 str 胜过 int 自从 'str' > 'int'.

在Python3中,字符串和ints的比较会引起一个 TypeError.


要只查找数字列中的最大值,使用

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

15
投票

你好最简单的答案是下面的.答案:。

df.max().max()

解释: series = df.max() 给你一个包含每列最大值的Series。 因此 series.max()给你整个数据帧的最大值。

最佳答案通常是最简单的


1
投票

最大值可以通过这两步找到。

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

0
投票

对于最大值,检查前面的答案...对于数值的最大值,用例如:

val_cols = [c for c in df.columns if c.startswith('val')]
print df[val_cols].max()
© www.soinside.com 2019 - 2024. All rights reserved.