📜  在 Pandas 中突出显示最后两列的最大值 – Python(1)

📅  最后修改于: 2023-12-03 15:07:45.364000             🧑  作者: Mango

在 Pandas 中突出显示最后两列的最大值 – Python

在 Pandas 中,我们可以使用 style.apply()pd.DataFrame.idxmax()方法来突出显示最后两列中的最大值。下面将介绍如何使用这些方法来实现此目标。

首先,我们需要导入 Pandas 库并创建一个 DataFrame:

import pandas as pd

data = {'Name':['John', 'Mike', 'Sarah', 'Kate', 'Ben'], 
        'Age':[25, 30, 28, 22, 32], 
        'Salary':[50000, 70000, 60000, 55000, 80000], 
        'Experience':[3, 5, 4, 2, 6]}

df = pd.DataFrame(data)

上述代码创建了一个包含姓名、年龄、薪水和经验数据的 DataFrame。

接下来,我们可以使用 idxmax()方法来获取最后两列中的最大值所在的行和列索引:

max_values = df.iloc[:, -2:].idxmax()

iloc[:, -2:]选择了 DataFrame 中的最后两列数据,idxmax()方法获取了这两列中的最大值所在的行和列索引。

我们可以通过以下方法将其中的行和列索引分别转换为列表:

max_rows = list(max_values)
max_cols = list(max_values.index)

然后,我们可以使用 style.apply()方法将 DataFrame 中的最大值所在的单元格加粗和突出显示:

df.style.apply(lambda x: ['font-weight: bold' if x.name in max_rows and y in max_cols 
                          else '' for y in x.index])

上述代码中,x.name表示每个单元格所在的行索引,x.index表示每个单元格所在的列索引。style.apply()方法通过遍历 DataFrame 中的每个单元格并应用指定的样式来实现单元格的突出显示。

最终,我们将得到一个突出显示最后两列中的最大值的 DataFrame。

完整代码如下:

import pandas as pd

data = {'Name':['John', 'Mike', 'Sarah', 'Kate', 'Ben'], 
        'Age':[25, 30, 28, 22, 32], 
        'Salary':[50000, 70000, 60000, 55000, 80000], 
        'Experience':[3, 5, 4, 2, 6]}

df = pd.DataFrame(data)

max_values = df.iloc[:, -2:].idxmax()
max_rows = list(max_values)
max_cols = list(max_values.index)

df.style.apply(lambda x: ['font-weight: bold' if x.name in max_rows and y in max_cols 
                          else '' for y in x.index])

运行上述代码后,您将看到突出显示最后两列中的最大值的 DataFrame。

注意:上述代码中使用了 Lambda 表达式和列表推导式,以增加代码的简洁性和可读性。如果您对这些概念不熟悉,建议先学习相关知识再尝试理解代码。