You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas Styler对象中添加%符号?

解决Pandas Styler对象指定列添加百分比符号的问题

问题场景

将DataFrame中CPU、Memory列的百分比字符串转为整数用于计算后,通过applymap和apply设置了单元格高亮与行高亮,得到Styled_df。尝试通过styled_df['CPU', 'Memory'] = styled_df['CPU', 'Memory'] + '%'为指定列添加%符号时,触发错误:

TypeError: 'Styler' object is not subscriptable

错误原因

Pandas的Styler对象是用于表格样式渲染的包装器,不支持像原生DataFrame那样通过下标([])直接修改数据或显示内容,必须使用Styler提供的专用方法来调整显示格式。

解决方案

使用Styler的format()方法,针对指定列设置显示格式,即可在保留原有高亮样式的同时,为数值添加%符号。

修改后的完整代码

import pandas as pd

data = {'CPU': ['80%', '60%', '90%'],
        'Memory': ['90%', '70%', '60%'],
        'MARKING': [1, 0, 1]}
df = pd.DataFrame(data)

# 转换百分比字符串为整数用于计算
df[['CPU', 'Memory']] = df[['CPU', 'Memory']].replace('%', '', regex=True).astype(int)


def highlight_cells(val, threshold):
    if val > threshold:
        return 'color: red'
    return ''


def highlight_row(row):
    if row['MARKING'] == 1:
        return ['background-color: yellow'] * len(row)
    return [''] * len(row)


# 链式调用format方法为指定列添加%符号,同时保留高亮样式
styled_df = (df.style.applymap(lambda x: highlight_cells(x, 35), subset=['CPU'])
             .applymap(lambda x: highlight_cells(x, 38), subset=['Memory'])
             .apply(highlight_row, axis=1)
             # 为CPU、Memory列设置显示格式,添加%符号
             .format(lambda x: f"{x}%", subset=['CPU', 'Memory']))

# 保存带样式和百分比符号的输出
with pd.ExcelWriter('styled_output.xlsx', engine='openpyxl') as writer:
    styled_df.to_excel(writer, sheet_name='Styled', index=False)

关键说明

  • format()方法支持通过subset参数指定要格式化的列,避免影响其他列的显示
  • 可以使用格式化字符串(如"{:.0f}%")或lambda函数来控制数值的显示格式,这里因为数值已经是整数,直接拼接%即可

内容的提问来源于stack exchange,提问作者catbug

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 20:12:07