我想测试列的值是否大于同一数据帧的另一个特定值。如果值较大,我想突出显示该特定单元格。
我试过这个:
import pandas as pd
b = pd.DataFrame([[5,7,3],[2,3,4],[8,4,7]])
for i in range(0, len(b)):
for j in range(0, len(b.columns)):
if b.iloc[i][j] > b.iloc[2][j]:
b.style.applymap(lambda x: 'background-color : blue' if b.iloc[i][j] > b.iloc[2][j] else '')
b
Run Code Online (Sandbox Code Playgroud)
因此,在这个例子中,我想检查 5 或 7 是否大于 3(第 1 列)、2 或 3 是否大于 4(第 2 列)以及 8 或 4 是否大于 7。
它不会染色任何东西...我希望有人能帮助我。提前谢谢。
尝试这个解决方案:
import pandas as pd
import numpy as np
df = pd.DataFrame([[5,7,8],[2,3,4],[8,4,9]])
def highlight(s):
'''
highlight the maximum in a Series.
'''
is_max = s >= s[2]
return ['background-color: blue' if v else '' for v in is_max]
df.style.apply(highlight, axis=0)
Run Code Online (Sandbox Code Playgroud)
请注意,该解决方案基于我们讨论的线程。主要变化是突出显示功能内的条件。每次使用applymap都适用于单个单元格,并且无法访问其在数据框中的位置。每次使用apply都适用于单行,并且可以与同一行和不同列中的单元格进行比较。