如何突出显示数据框中的特定行?

How to highlight specific rows in a dataframe?

提问人:Melissa Arroyo-Mendoza 提问时间:10/17/2023 最后编辑:Melissa Arroyo-Mendoza 更新时间:10/18/2023 访问量:82

问:

例如,我希望能够在数据帧中以绿色突出显示前 17 行。我已经看到了关于如何根据列值突出显示行的答案,但没有比行更简单的方法,而不管列中的值如何。我不关心行中的值。

TLDR:我只是希望能够将数据帧中的前 17 行涂成绿色。

感谢您的帮助!

Python pandas 数据帧 突出显示

评论

0赞 buran 10/17/2023
DataFrame没有行的颜色概念。根据输出的位置(目前尚不清楚),有可能实现这种表示。例如 stackoverflow.com/q/43596579/4046632
0赞 Mustafa Aydın 10/19/2023
(正如其标题所暗示的那样,先前关联的重复问答实现了对单元格中值的条件样式;这个问题要求与值无关的样式。

答:

1赞 Timeless 10/17/2023 #1

一种选择是在行上应用背景色subset

color = "lime"
N = 7 # adjust here

(
    df.style.apply(
        lambda _: [f"background-color: {color}"]*N,
        subset=pd.IndexSlice[:N])
)

输出:

enter image description here

使用的输入:

np.random.seed(0)

df = pd.DataFrame(
    {"col1": np.random.randn(10),
     "col2": np.random.randn(10),
     "col3": np.random.randn(10)
    }
)
1赞 Mustafa Aydın 10/17/2023 #2
df.style.applymap(lambda _: "background-color: green", subset=(df.index[:17],))

其中,我们用元组子集样式区域,表示我们选择行(如果元组被剥离,它会将它们解释为列名)。请注意,我们不能直接写入那里,因为并非所有数据帧都具有默认的 RangeIndex (0, 1 ...)。由于我们并不真正关心单元格中的值,而是行索引本身,因此在着色函数中使用以传达忽略它。range(17)_

前 N 行的泛化:

# Color first N rows
N, color = 17, "lightgray"
df.style.applymap(lambda _: f"background-color: {color}", subset=(df.index[:N],))

特定行的泛化:

# Color specific rows
rows_to_color = [0, 4, 5, 12]
color = "lightgray"
df.style.applymap(lambda _: f"background-color: {color}",
                  subset=(df.index[rows_to_color],))

评论

1赞 Melissa Arroyo-Mendoza 10/18/2023
非常感谢你超越,也给了我如何做特定的行,而不仅仅是前几行或最后一行。我真的很感激