我试图从整个Pandas Dataframe 中获取最大值。我对它来自哪一行或哪一列不感兴趣。我只对DataFrame中的单个最大值感兴趣。
下面是我的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()可以完成这项工作,但它为每一列返回一个最大值,但我对此不感兴趣。我需要整个 Dataframe 的最大值。
7条答案
按热度按时间eh57zj3b1#
DataFrame中所有值的最大值可以使用
df.to_numpy().max()
获得,或者对于pandas < 0.24.0
,我们使用df.values.max()
:最大值是
f
而不是43.0,因为在CPython2中,在CPython2中,不同类型的对象…按其类型名称排序。因此,任何
str
都比自'str' > 'int'
以来的任何int
都大。在Python3中,字符串和int的比较会引发
TypeError
。若要仅在数值列中查找最大值,请使用
aelbi1ox2#
最简单的答案如下。答:
说明:
series = df.max()
为您提供一个包含每列最大值的Series。因此,
series.max()
为整个 Dataframe 提供了最大值。当涉及字符串时,
numeric_only
是必需的;正如@unutbu的回答所指出的,OP的问题的结果在python 2中将是f
,在python 3中将是TypeError
。z0qdvdin3#
另一种方法:
本质上,
melt()
将DataFrame转换为一个长列。mm5n2pyu4#
使用numpy max
或
或者在Pandas身上
xqkwcwgp5#
对于最大值,检查以前的答案。。对于值的最大值,使用例如:
nfzehxib6#
可以通过以下两个步骤找到Max:
f45qwnt87#
This answer可能最适合一般情况,但如果您需要速度,并且您的值仅限于已知列,则首先指定您的列将使用更少的CPU周期。例如:
如果已知指定的列仅包含数字,则可以删除
numeric_only
。