- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有这样一个函数:
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
,我们首先为 other
、price
和 outlier
列生成样式为 ["", "", ""]
。我们可以使用 row.index.get_loc("price")
获取正确的索引,仅修改列表中的 price
部分,如
ret[row.index.get_loc("price")] = "background-color: yellow"
# ret becomes ["", "background-color: yellow", ""]
结果
关于python - 根据 pandas 中的另一个列值突出显示一个列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50724356/
有没有一种方法可以“标记”对象的属性,使它们在反射中“突出”? 例如: class A { int aa, b; string s1, s2; public int AA
我是一名优秀的程序员,十分优秀!