gpt4 book ai didi

python - 根据 pandas 中的另一个列值突出显示一个列值

转载 作者:太空狗 更新时间:2023-10-29 20:24:57 26 4
gpt4 key购买 nike

我有这样一个函数:

def highlight_otls(df):
return ['background-color: yellow']

像这样的 DataFrame:

price   outlier 
1.99 F,C
1.49 L,C
1.99 F
1.39 N

我想做的是根据另一列的这种情况在我的 df 中突出显示某一列:

data['outlier'].str.split(',').str.len() >= 2

所以如果列值 df['outlier'] >= 2,我想突出显示对应的列 df['price']。 (所以前 2 个价格应该在我上面的数据框中突出显示)。

我试图通过执行以下操作来执行此操作,但出现错误:

data['price'].apply(lambda x: highlight_otls(x) if (x['outlier'].str.split(',').str.len()) >= 2, axis=1)

知道如何以正确的方式做到这一点吗?

最佳答案

使用 Styler.apply。 (要输出为 xlsx 格式,请使用 to_excel 函数。)

假设一个人的数据集是

other   price   outlier
0 X 1.99 F,C
1 X 1.49 L,C
2 X 1.99 F
3 X 1.39 N

def hightlight_price(row):
ret = ["" for _ in row.index]
if len(row.outlier.split(",")) >= 2:
ret[row.index.get_loc("price")] = "background-color: yellow"
return ret

df.style.\
apply(hightlight_price, axis=1).\
to_excel('styled.xlsx', engine='openpyxl')

来自documentation , "DataFrame.style 属性是一个返回 Styler 对象的属性。"

我们将我们的样式函数 hightlight_price 传递到 Styler.apply 并要求函数具有 axis=1 的逐行性质. (回想一下,我们要根据 同一行中的 异常值 信息为每行中的 price 单元格着色。。)

我们的函数 hightlight_price 将生成视觉样式每一行。对于每一行 row,我们首先为 otherpriceoutlier 列生成样式为 ["", "", ""]。我们可以使用 row.index.get_loc("price") 获取正确的索引,仅修改列表中的 price 部分,如

ret[row.index.get_loc("price")] = "background-color: yellow"
# ret becomes ["", "background-color: yellow", ""]

结果

enter image description here

关于python - 根据 pandas 中的另一个列值突出显示一个列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50724356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com