如何在熊猫数据框的多个列中最小/最大值?

时间:2020-10-26 13:52:21

标签: python pandas max min

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

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

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)的一个值

3 个答案:

答案 0 :(得分:4)

对列表中的选定列使用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

答案 1 :(得分:2)

如果不确定列名,并希望在最后两列中执行此操作,则可以这样做:

In [2138]: df.iloc[:, -2:].agg(['max', 'min'])
Out[2138]: 
       C   D
max  9.0  14
min  2.0   3

答案 2 :(得分:1)

您可以使用

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

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