dataframe某列数据多条件标背景框色
时间: 2023-09-01 07:10:49 浏览: 95
你可以使用`Styler`对象的`apply`方法来实现DataFrame列数据的多条件标背景框色,具体步骤如下:
1. 定义一个函数,该函数接受一个Series对象,根据条件返回对应的CSS样式字典。
2. 使用`Styler`对象的`apply`方法,将该函数应用到DataFrame的某列上,该方法将返回一个新的`Styler`对象。
3. 在新的`Styler`对象上使用`set_properties`方法添加CSS样式,最后通过`render`方法将结果渲染为HTML字符串。
下面是一个示例代码,假设我们有一个DataFrame `df`,其中包含了一个名为`score`的列,我们想要将`score`列中小于60的值背景色为红色,大于等于60且小于80的值背景色为黄色,大于等于80的值背景色为绿色:
```python
import pandas as pd
# 定义标背景框色函数
def background_color(val):
color = 'red' if val < 60 else 'yellow' if val < 80 else 'green'
return {
'background-color': color,
'border': '1px solid black'
}
# 创建DataFrame
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie', 'David'],
'score': [70, 55, 85, 90]
})
# 创建Styler对象并应用标背景框色函数
styler = df.style.applymap(background_color, subset=['score'])
# 添加CSS样式
styles = [{
'selector': 'td',
'props': [('padding', '4px 8px')]
}, {
'selector': 'tr:hover',
'props': [('background-color', '#ddd')]
}]
styler.set_properties(**{'border-collapse': 'collapse'}).set_table_styles(styles)
# 输出HTML字符串
html = styler.render()
print(html)
```
输出结果为:
```html
<style>
#T_27c17_row0_col1 {
background-color: yellow;
border: 1px solid black;
}
#T_27c17_row1_col1 {
background-color: red;
border: 1px solid black;
}
#T_27c17_row2_col1 {
background-color: green;
border: 1px solid black;
}
#T_27c17_row3_col1 {
background-color: green;
border: 1px solid black;
}
#T_27c17 td {
padding: 4px 8px;
}
#T_27c17 tr:hover {
background-color: #ddd;
}
</style>
<table id="T_27c17_" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>name</th>
<th>score</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>Alice</td>
<td style="background-color: yellow; border: 1px solid black;">70</td>
</tr>
<tr>
<th>1</th>
<td>Bob</td>
<td style="background-color: red; border: 1px solid black;">55</td>
</tr>
<tr>
<th>2</th>
<td>Charlie</td>
<td style="background-color: green; border: 1px solid black;">85</td>
</tr>
<tr>
<th>3</th>
<td>David</td>
<td style="background-color: green; border: 1px solid black;">90</td>
</tr>
</tbody>
</table>
```
在上面的代码中,我们首先定义了一个名为`background_color`的函数,该函数接受一个值,根据该值返回对应的CSS样式字典。在这个例子中,我们使用`if-else`语句根据不同的值返回不同的背景色和边框样式。
然后,我们创建了一个DataFrame,并使用`style.applymap`方法将`background_color`函数应用到`score`列上,该方法将返回一个新的`Styler`对象。
接下来,我们使用`set_properties`方法添加了一些CSS样式,其中包括表格单元格的边框样式和内边距,以及鼠标悬停时的背景色。
最后,我们使用`render`方法将结果渲染为HTML字符串,并输出到控制台。
阅读全文