PANDAS DataFrame Styler-如何将Pandas DataFrame作为Excel表样式?

发布于 2025-01-17 09:33:14 字数 464 浏览 0 评论 0原文

如何将熊猫数据框架作为excel表(替代行颜色)样式?

示例样式:

示例数据:

import pandas as pd
import seaborn as sns

df = sns.load_dataset("tips")

enter image description here

How to style the pandas dataframe as an excel table (alternate row colour)?

Sample style:

enter image description here

Sample data:

import pandas as pd
import seaborn as sns

df = sns.load_dataset("tips")

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半山落雨半山空 2025-01-24 09:33:14

如果您的最终目标是保存 to_excel,导出后保留样式的唯一方法是使用基于 apply 的方法:

对于给定的示例,请使用 df.style.apply 使用交替的行颜色和 df.style.applymap_index 设置所有行/列索引的样式:

css_alt_rows = 'background-color: powderblue; color: black;'
css_indexes = 'background-color: steelblue; color: white;'

(df.style.apply(lambda col: np.where(col.index % 2, css_alt_rows, None)) # alternating rows
         .applymap_index(lambda _: css_indexes, axis=0) # row indexes (pandas 1.4.0+)
         .applymap_index(lambda _: css_indexes, axis=1) # col indexes (pandas 1.4.0+)
).to_excel('styled.xlsx', engine='openpyxl')


如果您只关心 Jupyter 中的外观,另一个选择是使用 df.style.set_table_styles (需要 pandas 1.2.0+):

# pandas 1.2.0+
df.style.set_table_styles([
    {'selector': 'tr:nth-child(even)', 'props': css_alt_rows},
    {'selector': 'th', 'props': css_indexes},
])

If your final goal is to save to_excel, the only way to retain the styling after export is using the apply-based methods:

For the given sample, use df.style.apply to style each column with alternating row colors and df.style.applymap_index to style all row/col indexes:

css_alt_rows = 'background-color: powderblue; color: black;'
css_indexes = 'background-color: steelblue; color: white;'

(df.style.apply(lambda col: np.where(col.index % 2, css_alt_rows, None)) # alternating rows
         .applymap_index(lambda _: css_indexes, axis=0) # row indexes (pandas 1.4.0+)
         .applymap_index(lambda _: css_indexes, axis=1) # col indexes (pandas 1.4.0+)
).to_excel('styled.xlsx', engine='openpyxl')


If you only care about the appearance in Jupyter, another option is to set properties for targeted selectors using df.style.set_table_styles (requires pandas 1.2.0+):

# pandas 1.2.0+
df.style.set_table_styles([
    {'selector': 'tr:nth-child(even)', 'props': css_alt_rows},
    {'selector': 'th', 'props': css_indexes},
])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文