我试图从整个熊猫数据框中获取最大值。我对它来自哪个行或列不感兴趣。我只对数据框中的单个最大值感兴趣。
这是我的数据框:
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()会完成这项工作,但是它为每一列返回一个最大值,但是我对此并不感兴趣。我需要整个数据框的最大值。
可以使用获得的所有的数据帧中值的最大值df.to_numpy().max(),或者pandas < 0.24.0我们使用df.values.max():
df.to_numpy().max()
pandas < 0.24.0
df.values.max()
In [10]: df.to_numpy().max() Out[10]: 'f'
最大值f而不是43.0,因为在CPython2中,
f
In [11]: 'f' > 43.0 Out[11]: True
在CPython2中,不同类型的对象…按其 类型名称 排序。因此,任何str比较都比int以来更大`’str’
str
int
‘int’`。
在Python3中,字符串和整数的比较产生一个TypeError。
TypeError
要仅在数字列中找到最大值,请使用
df.select_dtypes(include=[np.number]).max()