DataFrame数字格式化:按自定义逻辑格式化指定数据子集
Pandas DataFrame 自定义列格式化实现方法
针对分列定制数字格式化的需求,可根据实际使用场景选择以下两种实现方式:
方案1:直接修改列值(适合导出、后续复用格式化结果)
该方式会直接将对应列转换为格式化后的字符串值,处理后可直接导出为Excel、CSV等文件,输出效果和需求完全匹配。
首先构造示例原始数据:
import pandas as pd # 初始化示例原始DataFrame df = pd.DataFrame({ "国家": ["美国", "日本", "中国", "英国", "欧元区"], "最新值": [8.60, 2.50, 2.00, 9.10, 8.10], "前值": [8.30, 2.50, 2.10, 9.00, 7.40], "绝对变动": [0.30, 0.00, -0.10, 0.10, 0.70] })
执行格式化处理代码:
# 最新值、前值列保留1位小数 df[["最新值", "前值"]] = df[["最新值", "前值"]].round(1).astype(str) # 绝对变动列转换为基点单位:数值*100后拼接bp后缀 df["绝对变动"] = (df["绝对变动"] * 100).astype(int).astype(str) + " bp"
处理后打印df即可得到需求中的格式化结果。
方案2:仅渲染层格式化(适合Jupyter类场景展示,不修改原始值)
如果需要保留原始数值做后续计算,仅在表格展示时应用格式化规则,可以用pandas原生的style格式化接口,不会改动原始数据类型:
# 定义各列的格式化规则 formatter = { "最新值": "{:.1f}", "前值": "{:.1f}", "绝对变动": lambda x: f"{int(x * 100)} bp" } # 渲染格式化后的表格 styled_df = df.style.format(formatter)
在Notebook环境中直接渲染styled_df就能看到格式化后的展示效果,原始df的数值仍然是浮点类型,不影响后续统计计算。
注意:如果业务场景存在非整数基点(如0.5bp),可以去掉转int的逻辑,按需调整小数保留位数即可,例如将绝对变动的格式化规则改为
lambda x: f"{x * 100:.1f} bp"就能保留1位小数的基点值。
内容的提问来源于stack exchange,提问作者RandomForester
相关产品推荐
相关产品推荐

