簡體   English   中英

是否可以突出顯示 Pandas dataframe 中的行組?

[英]Is it possible to highlight groups of rows in Pandas dataframe?

我想知道是否有一種方法可以根據某些特定列中的值突出顯示 Pandas dataframe 中的行? 例如:

在此處輸入圖像描述

從上面可以看出,在 Col_4 中,值是不同的。 因此,是否可以突出顯示屬於不同值的行? 或者,為了使其更復雜,根據多列中的不同值突出顯示行?

謝謝!

與以下玩具 dataframe:

import pandas as pd

df = pd.DataFrame(
    {
        "col1": ["A", "F", "A", "F", "A", "A", "A", "A"],
        "col2": ["B", "B", "B", "B", "B", "G", "G", "B"],
        "col3": ["C", "H", "C", "H", "C", "I", "C", "I"],
        "col4": ["D", "E", "D", "E", "E", "D", "D", "E"],
    }
)

在此處輸入圖像描述

這是一種方法:

# Sort value and add an unique identifier to identical rows
df = df.sort_values(["col1", "col2", "col3", "col4"]).reset_index(drop=True)
df["hash"] = df.apply(lambda x: hash("".join(x)), axis=1)

# Attribut a unique unique color to each identifier
import random

colors = [
    f"#{random.randint(0,255):02X}{random.randint(0,255):02X}{random.randint(0,255):02X}"
    for _ in range(df.shape[0])
]

color_mapping = {}
for value in df["hash"].unique():
    color = colors.pop(0)
    if value not in color_mapping:
        color_mapping[value] = color
# Color rows (run in a Jupyter notebook)
df.style.apply(
    lambda v: [f"background-color: {color_mapping.get(v['hash'], '')}"] * df.shape[1],
    axis=1,
).hide_columns("hash")

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM