如何在pandas数据框的多列中找到最小/最大值?

3

如何从数据框中获取多列的最小/最大值?我无法找到简单的方法来获取这些值,只能通过循环遍历列或多次转换数据框来实现。我认为一定有更好的方法来解决这个问题。

例如,以下是一些代码...

import pandas as pd

df = pd.DataFrame([[0,1,2,3],
                  [6,5,None,pd.NaT],
                  [8,None,9,None],
                  [None,12,7,14]], columns=list('ABCD'))

...这是数据框的样子,我想要列'C'和'D'的最小/最大值。

     A     B    C     D
0  0.0   1.0  2.0     3
1  6.0   5.0  NaN   NaT
2  8.0   NaN  9.0  None
3  NaN  12.0  7.0    14

如何做到这一点是一个好的方法?

附加说明:两列 ['C','D'] 的结果应该有一个最小值(2)和一个最大值(14)


df.describe() - Equinox
3个回答

6
使用列表选择列与DataFrame.agg一起使用 - ['C','D']:
df1 = df[['C','D']].agg(['min','max'])
print (df1)
       C   D
min  2.0   3
max  9.0  14

编辑:对于2个标量,您可以使用以下方法:

s = df[['C','D']].stack()
print (s)
0  C     2
   D     3
2  C     9
3  C     7
   D    14
dtype: object

a = s.max()
print (a)
14

b = s.min()
print (b)
2

@jezrael 谢谢您的回答,我学到了新东西 ;-)抱歉,也许我的问题不够明确。我只想要列 ['C','D'] 的一个最小/最大值作为结果。 - Peter

6

您可以使用以下方法:

df[['C','D']].min().min()
2.0

以及

df[['C', 'D']].max().max()
14.0

嗯,但如果交换选项卡编辑了A/Q,在标签pandas中出现新问题,那就没问题了。 - jezrael

3
如果您对列名不确定,想要在最后两列中操作,可以这样做:
In [2138]: df.iloc[:, -2:].agg(['max', 'min'])
Out[2138]: 
       C   D
max  9.0  14
min  2.0   3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接