📅  最后修改于: 2023-12-03 15:07:45.364000             🧑  作者: Mango
在 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 表达式和列表推导式,以增加代码的简洁性和可读性。如果您对这些概念不熟悉,建议先学习相关知识再尝试理解代码。