我知道要访问 Dataframe 的左上角单元格,我们需要使用df.columns.name
,我可以看到有关样式的PANAS文档提供了使用apply_index
(https://pandas.pydata.org/docs/user_guide/style.html)设置行/列标题样式的示例
我的问题是如何设置左上角单元格的样式,比如将其设置为蓝色。谢谢。
import pandas as pd
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
df.columns.name = 'Test'
df
更新:下面是Oroboros1的答案,内容非常丰富,也很有帮助。但似乎在将Styler对象转换为Excel时,即转换为_EXCEL()时,左上角单元格的格式不会保留。
在文档(和导出到Excel部分)中,声明“导出到Excel中不包括表级样式和数据单元格css类:单个单元格必须具有由Styler.apply
和/或Styler.applymap
方法Map的属性”。
更新:多亏了@ouroboros1,对于任何感兴趣的人来说,这里都是一个可能的解决方案。
d = {'col1': [1, 2], 'col2': [3, 4]}
color_matrix_df = pd.DataFrame([['background-color:yellow', 'background-color:yellow'],
['background-color:yellow', 'background-color:blue']])
df = pd.DataFrame(data=d)
df.columns.name = 'Test'
df
def colors(df, color_matrix_df):
style_df = pd.DataFrame(color_matrix_df.values, index=df.index, columns=df.columns)
return style_df.applymap(lambda elem: elem)
df_upper_left_cell = df.style.set_table_styles(
[{'selector': '.index_name',
'props': [('background-color', 'IndianRed'),
('color', 'white')]
}]
)
df_upper_left_cell.apply(colors, axis=None, color_matrix_df=color_matrix_df)
w = pd.ExcelWriter('Test.xlsx', engine='xlsxwriter')
df_upper_left_cell.to_excel(w, index=True)
wb = w.book
ws = w.sheets['Sheet1']
fmt_header = wb.add_format({'fg_color': '#cd5c5c', 'align': 'center'})
ws.write(0,0, df_upper_left_cell.data.columns.name, fmt_header)
w.save()
上述代码将对数据框进行如下所示的着色,并将其保存到Excel文件。
2条答案
按热度按时间6pp0gazn1#
为此,您可以使用
Styler.set_table_styles
。我们有以下选项:
name
)df.columns.name
和/或df.index.name
有三个选项可以设置单元格的样式(全部或部分)。我会在下面走一遍。首先是数据:
标准外观:
**选项1.**单元格为空
诀窍是查看
print(df.style.set_table_styles().to_html())
的输出:注意:
<th class="blank level0" > </th>
。我们可以访问这些类名并设置格式。例如,在这种情况下,我们访问blank
(level0
应用于所有level0
,即也应用于所有COLS和索引)。结果:
选项2.
df.columns.name
和/或df.index.name
。一种样式到整个单元格。在这两种情况下,我们都需要
.index_name
,而不是.blank
。例如。结果:
选项3.
df.columns.name
和df.index.name
,风格不同。这个比较复杂,因为我们需要为
columns.name
添加tr:nth-child(1)
,为index.name
添加tr:nth-child(2)
。3vpjnl9f2#
基于The Coding Bot: How to colour a specific cell in pandas dataframe based on its position?
您可以将
style.apply
与iloc
一起用于特定单元格来分配颜色。将函数中的
#
更改为字体颜色或两者都更改。要查看函数中的步骤,请检查:
要将颜色关联到特定索引,可以使用
style.applymap_index
: