这是我的DataFrame:

import pandas as pd
import numpy as np
df = pd.DataFrame({'a': ['long', 'short', np.nan], 'b': [np.nan, 3, 2]})

我想设计df.to_excel的输出.就像这样:

enter image description here

如果是df.a == 'long',a是绿色,如果是df.a == 'short',a是红色. 我已经读了很多关于SO的帖子,但我想不出该怎么做.

这是我的一次try ,非常接近结果:

def bounded_highlights(df):
    conds = [df.a == 'short', df.a == 'long']
    labels = ['background-color: pink', 'background-color: lime']
    array = np.select(conds, labels, default='')
    return array

当我使用df.style.apply(bounded_highlights, axis=None).to_excel(...的时候,它不起作用.

推荐答案

因为applySeries传递给您的函数,并且您需要定义需要做什么来标记您的列.以下是一个可能的解决方案:

def bounded_highlights(s):

    if s.name=='a': # if column a is passed
        conds = [s == 'short', s == 'long']
        labels = ['background-color: pink', 'background-color: lime']
        array = np.select(conds, labels, default='')
        return array

    else: # if other columns are passed
        return ['']*s.shape[0]

然后这样使用它:

df.style.apply(bounded_highlights).to_excel('file_name.xlsx')

Python相关问答推荐

如果条件为真,则Groupby.mean()

PywinAuto在Windows 11上引发了Memory错误,但在Windows 10上未引发

类型错误:输入类型不支持ufuncisnan-在执行Mann-Whitney U测试时[SOLVED]

Python中的嵌套Ruby哈希

使用@ guardlasses. guardlass和注释的Python继承

Telethon加入私有频道

我如何使法国在 map 中完全透明的代码?

Godot:需要碰撞的对象的AdditionerBody2D或Area2D以及queue_free?

Python—从np.array中 Select 复杂的列子集

python中字符串的条件替换

如何使Matplotlib标题以图形为中心,而图例框则以图形为中心

转换为浮点,pandas字符串列,混合千和十进制分隔符

当点击tkinter菜单而不是菜单选项时,如何执行命令?

为用户输入的整数查找根/幂整数对的Python练习

Python将一个列值分割成多个列,并保持其余列相同

使用np.fft.fft2和cv2.dft重现相位谱.为什么结果并不相似呢?

用来自另一个数据框的列特定标量划分Polars数据框中的每一列,

对数据帧进行分组,并按组间等概率抽样n行

函数()参数';代码';必须是代码而不是字符串

Python:使用asyncio.StreamReader.readline()读取长行