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

Python包bar-chart-race 0.1.0无法将千位分隔符修改为点号问题

bar-chart-race 0.1.0 德国/荷兰风格数值格式解决方案

错误原因说明

  • 直接对DataFrame对象使用"{0:n}".format(x)报错,是因为n格式符仅支持单个数值类型变量,不能直接作用于整个DataFrame
  • pandas的style.format仅修改交互式环境下的表格展示样式,不会修改原始数据,也无法被bar-chart-race读取,因此无法同步到生成的图表中

推荐解决方案

直接在调用bar_chart_race绘图函数时,通过fmt参数传入自定义的数值格式化规则即可,无需修改全局配置,示例代码如下:

import bar_chart_race as bcr
import pandas as pd

# 你的数据准备步骤,此处省略
# df = pd.read_csv("你的数据文件路径")

bcr.bar_chart_race(
    # 保留你原本设置的所有参数,比如filename、title、orientation等
    filename="output.mp4",
    title="图表标题",
    # 核心配置:自定义数值格式,实现1.000,23的德式显示
    fmt=lambda x: f"{x:,.2f}".replace(",", "X").replace(".", ",").replace("X", ".")
)

格式调整说明

  • 若不需要保留两位小数,仅展示整数,将格式符:,.2f替换为:,d即可,对应fmt配置为:fmt=lambda x: f"{x:,d}".replace(",", ".")
  • 该配置直接作用于生成的动态图表上的数值标签,不会影响原始DataFrame的数值

可选:配合locale配置的方案

如果你已经正确配置了系统的德国区域locale,也可以直接调用locale的格式化方法,避免手动替换字符:

import locale
import bar_chart_race as bcr

# 不同系统的locale字符串写法有差异:
# Windows系统可填 'deu_DEU' 或 'German_Germany.1252'
# Linux/macOS系统可填 'de_DE.UTF-8'
locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8')

bcr.bar_chart_race(
    # 其他参数保留
    fmt=lambda x: locale.format_string('%.2f', x, grouping=True)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:54:01