假设我有一个带有列标题“A”和“B”的 2x2 DataFrame:
import pandas as pd
data_style = [
['background-color: #fdfd96', ''],
['', 'background-color: #fdfd96']
]
df = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
df_style = pd.DataFrame(data_style, columns=["A", "B"])
df = df.style.apply(lambda x: df_style, axis=None)
设置表格样式后,它看起来像这样:
My
df
现在是一个 Styler 对象。我怎样才能用
['background-color: #000000; color: #ffffff']
设置列值“A”和“B”的样式?
虽然当前的方法可以对整个 DataFrame 应用样式,但它不能直接用于对列标题应用单独的样式。要在 pandas 中设置列标题的样式,需要使用
Styler
对象的
set_table_styles
方法,并结合 CSS 选择器来定位列标题。
以下是如何使用
set_table_styles
和 CSS 选择器对列标题“A”和“B”应用所需样式的方法:
import pandas as pd
data_style = [
['background-color: #fdfd96', ''],
['', 'background-color: #fdfd96']
]
df = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
df_style = pd.DataFrame(data_style, columns=["A", "B"])
df = df.style.apply(lambda x: df_style, axis=None)
# 定义用于定位列标题“A”和“B”的 CSS 样式
styles = [
{'selector': 'th.col_heading.level0.col0', 'props': 'background-color: #000000; color: #ffffff;'},
{'selector': 'th.col_heading.level0.col1', 'props': 'background-color: #000000; color: #ffffff;'}
]
# 应用样式到列标题
df.set_table_styles(styles)
在这个代码中:
-
我们使用
set_table_styles
方法,它接受一个样式字典列表。 -
每个字典都包含
selector
和props
键。 -
selector
使用 CSS 选择器来定位特定的元素。在这里,我们使用.col_heading.level0.col0
和.col_heading.level0.col1
来分别选择列标题“A”和“B”。 -
props
包含要应用于所选元素的 CSS 属性。
此方法允许使用 CSS 选择器的强大功能来精确地定位和设置 pandas DataFrame 中任何元素的样式,包括列标题。
标签:python,pandas,dataframe From: 78813936