📜  使用 apply() 突出显示 Pandas DataFrame 的特定列(1)

📅  最后修改于: 2023-12-03 14:49:37.279000             🧑  作者: Mango

使用 apply() 突出显示 Pandas DataFrame 的特定列

在 Pandas 中,apply() 是一个非常强大的函数。它可以将一个函数应用到 Pandas DataFrame 的每一行或每一列。这个函数可以是一个现成的 Python 函数,也可以是一个自定义函数。

突出显示特定列

我们可以使用 Pandas DataFrame 的 apply() 函数来突出显示特定列。下面是一个例子:

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35]
}

df = pd.DataFrame(data)
df.style.applymap(lambda x: 'background-color: yellow', subset=['age'])

这段代码会将 DataFrame 的 'age' 列突出显示,使其变成黄色。注意,我们使用了 lambda 函数来将每一个单元格的背景颜色都设置成黄色。

在突出显示单元格的同时添加条件

如果我们想要根据某个条件突出显示单元格,我们可以使用 applymap() 函数中的 if-else 语句。下面是一个例子:

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35]
}

df = pd.DataFrame(data)

def highlight_age(x):
    if x > 30:
        return 'background-color: red'
    else:
        return 'background-color: yellow'
    
df.style.applymap(highlight_age, subset=['age'])

这段代码会将 DataFrame 的 'age' 列突出显示,如果单元格的值大于 30,那么背景颜色为红色,否则为黄色。

在突出显示行或列的同时添加条件

除了突出显示特定列之外,我们还可以使用 apply() 函数来突出显示特定行或列。下面是一个例子:

import pandas as pd

data = {
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35],
    'gender': ['female', 'male', 'male']
}

df = pd.DataFrame(data).set_index('name')

def highlight_female(s):
    return ['background-color: pink' if v == 'female' else '' for v in s]

def highlight_age(s):
    return ['background-color: red' if v > 30 else '' for v in s]

df.style.apply(highlight_female, axis=0, subset=['gender'])\
        .apply(highlight_age, axis=0, subset=['age'])

这段代码会将 DataFrame 中的 'gender' 列突出显示为粉色,'age' 列中大于 30 的单元格突出显示为红色。

总结

Pandas 的 apply() 函数非常灵活,它可以帮助我们实现各种数据处理的需求。在突出显示 DataFrame 中特定的行或列时,我们可以使用 apply() 函数和 applymap() 函数。通过结合 if-else 语句或其他逻辑,我们可以实现更加复杂的需求。