highlight_between 中放2个条件
时间: 2023-08-05 13:04:56 浏览: 39
如果你想在 `highlight_between` 中放入两个条件,你可以使用 `np.logical_and()` 函数来实现。具体操作如下:
```python
import pandas as pd
import numpy as np
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
'score': [70, 85, 90, 65]}
df = pd.DataFrame(data)
def color_red_orange(val):
if np.logical_and(val >= 80, val < 90):
color = 'red'
elif val >= 90:
color = 'orange'
else:
color = 'black'
return 'color: %s' % color
df.style.applymap(color_red_orange, subset=['score'])
```
上面的代码中,我们使用了 `np.logical_and()` 函数来判断 `score` 列中的值是否同时满足两个条件:
1. 大于等于 80;
2. 小于 90。
如果这两个条件都成立,就将字体颜色设置为红色。如果只有第二个条件成立,就将字体颜色设置为橙色。如果都不成立,就将字体颜色设置为黑色。
运行上面的代码,你应该会看到 `score` 列中的数值被设置为不同的颜色。
相关问题
python highlight_between多个条件写法
`highlight_between` 方法可以用来对 DataFrame 中某一列或子集中的数值进行范围判断,并对范围内的数值进行高亮显示。它接受两个参数,分别是范围的下限和上限。如果要对多个范围进行判断,可以使用 `or` 运算符将多个条件连接起来,例如:
```python
import pandas as pd
# 创建 DataFrame
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie', 'David'],
'score': [70, 55, 85, 90]
})
# 对 score 列中的数值进行范围判断,并对范围内的数值进行高亮显示
df.style.highlight_between(subset=['score'], low=60, high=80, color='yellow') \
.highlight_between(subset=['score'], low=None, high=60, color='red') \
.highlight_between(subset=['score'], low=80, high=None, color='green')
```
在这个例子中,我们使用了三次 `highlight_between` 方法,分别对数值在 60 到 80 之间、小于 60 和大于 80 的数值进行高亮显示。其中,`low` 和 `high` 参数分别指定了范围的下限和上限,`color` 参数指定了高亮显示的颜色。
test.groupby('size').transform(lambda x: x.style.highlight_between(subset=['size']))这个代码为什么报错:
这个代码可能报错是因为 `pandas.DataFrame.style` 返回的是一个 `Styler` 对象,而不是一个 DataFrame,而 `transform` 方法要求返回的是一个 DataFrame 或 Series。因此,你需要首先使用 `apply` 方法来将 Styler 对象转换为 DataFrame 或 Series,然后再使用 `transform` 方法,例如:
```
test.groupby('size').apply(lambda x: x.style.highlight_between(subset=['size'])).reset_index(drop=True).transform(lambda x: x)
```
在这个代码中,我们使用 `apply` 方法将每个分组的 DataFrame 转换为 Styler 对象,然后使用 `reset_index` 方法将分组索引重置,最后再使用 `transform` 方法来应用自定义的转换函数。注意,我们最后还使用了 `reset_index` 方法来将行索引重置为默认的数字索引。