猿问

如何在 pandas 数据帧的多列中求最小值/最大值?

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


例如,这里有一些代码...


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


慕婉清6462132
浏览 122回答 3
3回答

慕的地6264312

您可以使用,df[['C','D']].min().min() 2.0和df[['C', 'D']].max().max() 14.0

大话西游666

DataFrame.agg与按列表选择的列一起使用- ['C','D']:df1 = df[['C','D']].agg(['min','max'])print (df1)       C   Dmin  2.0   3max  9.0  14编辑:对于 2 个标量,您可以使用:s = df[['C','D']].stack()print (s)0  C     2   D     32  C     93  C     7   D    14dtype: objecta = s.max()print (a)14b = s.min()print (b)2

料青山看我应如是

如果您不确定列名称,并且想在最后 2 列上执行此操作,您可以执行以下操作:In [2138]: df.iloc[:, -2:].agg(['max', 'min'])Out[2138]:        C   Dmax  9.0  14min  2.0   3
随时随地看视频慕课网APP

相关分类

Python
我要回答