如何在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
相关产品推荐
相关产品推荐

