【问题标题】:Is it possible to highlight groups of rows in Pandas dataframe?是否可以突出显示 Pandas 数据框中的行组?
【发布时间】:2022-10-02 01:25:49
【问题描述】:

我想知道是否有一种方法可以根据某些特定列中的值突出显示 Pandas 数据框中的行?例如:

从上面可以看出,在 Col_4 中,值是不同的。因此,是否可以突出显示属于不同值的行?或者,为了使其更复杂,根据多列中的不同值突出显示行?

谢谢!

  • 您可以选择具有复杂或简单选择的行...但是数据框只是一种内存结构,如果您询问如何输出带有预格式化单元格的 csv,则没有“突出显示”,这不是 csvs 的功能...除此之外,我不确定你在问什么
  • 看看 openpyxl.styles。问候。

标签: python pandas


【解决方案1】:

使用以下玩具数据框:

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
COLORS = [
    "#F0A3FF",
    "#0075DC",
    "#FFA405",
    "#5EF1F2",
    "#FFFF00",
    "#E0FF66",
    "#FF5005",
    "#FFA8BB",
    "#2BCE48",
    "#993F00",
]

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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-12
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 2022-10-06
    • 2011-01-10
    相关资源
    最近更新 更多