如何从数据帧中获得几列的最小值/最大值?我无法找到一种简单的方法来获取这些值,只能通过遍历列或多次转换数据框来实现。我认为必须有更好的方法来解决这个问题。
例如,下面是一些代码...
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)的一个值
答案 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