首页 > 解决方案 > 如何在pandas python库中隔离数据框中的最大值

问题描述

我正在尝试在 python 的 pandas 数据框中隔离并打印最大值。

# Data frame:

df
>>     0   A   B   C
    0  0   0   0   0
    A  0  -3  -3   5
    B  0  -3  -6   2
    C  0   5   0  -3
    D  0   5   2  -3
    E  0   0  10   5
    F  0  -3   5  15

我设法使用以下代码隔离了该值:

x = df.max(axis=0)
maxValue = max(x)

maxValue
>> 15

但是我怎样才能访问这个元素呢?有没有办法遍历数据框的元素,这样

for elements in df:
    if element == maxValue:
        m = element

或者那些线上的东西?我需要找到最大的元素,在本例中为 15,并在本例中检索其位置,即 (C,F)。然后我需要存储它,然后找到第一个周围的下一个最大元素及其位置。

# desired output
[(C,F), (B,E), (A,D)]

我希望这是有道理的!任何关于我如何实现这一点的建议将不胜感激!:)

标签: pythonpandas

解决方案


我理解问题是有必要对最大值进行排序,所以使用 if nedd omit first column DataFrame.iloc,然后DataFrame.agg对于最大值的位置,max将它们排序为DataFrame.sort_values,选择它Series并最后转换为元组列表:

L = (list(df.iloc[:, 1:]
            .agg(['idxmax','max'])
            .sort_values('max', axis=1, ascending=False)
            .loc['idxmax'].items()))
print (L)
[('C', 'F'), ('B', 'E'), ('A', 'C')]

对于所有列删除iloc

L = (list(df.agg(['idxmax','max'])
            .sort_values('max', axis=1, ascending=False)
            .loc['idxmax'].items()))
print (L)
[('C', 'F'), ('B', 'E'), ('A', 'C'), ('0', '0')]

推荐阅读