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

如何在Pandas中仅将指定整数列以十六进制打印且保留原数据?

解决方案:不修改原DataFrame,仅格式化指定列显示

可以使用Pandas的Styler对象实现需求——它专门用于自定义DataFrame的显示格式,完全不会修改原始数据的内容和类型。

具体实现代码

import pandas as pd

data = [
  {"colA": "hello", "colB":  22, "colC": 3.0, "colD":   123476},
  {"colA": "there", "colB": 122, "colC": 4.0, "colD":  2384953},
  {"colA": "world", "colB": 222, "colC": 5.0, "colD": 39506483},
]

df = pd.DataFrame(data)

# 创建样式对象,针对指定列设置格式
styled_df = df.style.format(
    # 仅对colB应用十六进制格式化规则
    {'colB': lambda val: f"0x{val:02X}"}
).format(
    # 对colC保留两位小数(和原代码的float_format效果一致)
    "{:.2f}", subset=['colC']
)

# 打印格式化后的结果
print(styled_df.to_string())

打印输出结果

colA  colB  colC      colD
0  hello  0x16  3.00    123476
1  there  0x7A  4.00   2384953
2  world  0xDE  5.00  39506483

核心优势说明

  • 完全不修改原DataFrame:执行完代码后,df['colB']仍然是整数类型,原始数据没有任何变化
  • 精准控制列格式:可以单独对任意列设置自定义格式化规则,不会影响其他列的显示或数据
  • 兼容原有显示配置:如果需要保留原代码中的display.max_rows等全局显示选项,可以把Styler的创建和打印放在pd.option_context上下文管理器中:
    with pd.option_context('display.max_rows', None, 'display.max_columns', None, 'display.width', None, 'max_colwidth', 20):
        styled_df = df.style.format({'colB': lambda val: f"0x{val:02X}"}).format("{:.2f}", subset=['colC'])
        print(styled_df.to_string())
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:05:17