Python DataFrame数字格式转换:如何实现千位空格分隔?
解决千位空格分隔的数字格式化问题
你需要修改style.format的处理逻辑,直接用{:.2f}只会保留两位小数,不会添加千位分隔。要实现空格分隔的千位格式,可以通过格式化后替换逗号为空格,或者自定义格式化函数:
修改后的代码
df['Revenue'] = df['card_price'] * df['buyers'] df_revenue_top5_bottom5 = df[['card_manufacturer','Revenue']].groupby('card_manufacturer',as_index=False).sum().sort_values(by=["Revenue"], ascending = False) df_revenue_top5_bottom5 = df_revenue_top5_bottom5.head(5) # 用lambda函数实现空格分隔的千位格式 df_revenue_top5_bottom5.style.bar(color='lightgreen').format({'Revenue': lambda x: '{:,.2f}'.format(x).replace(',', ' ')})
效果说明
这段代码会先将数字格式化为带逗号的千位分隔形式(比如7051252.94→7,051,252.94),再把逗号替换成空格,最终得到你要的7 051 252.94格式。
为什么之前的方法无效?
replace直接用在数值列上不生效:Revenue列是数值类型,replace是字符串操作,必须在格式化阶段处理。{:.2f}仅控制小数位数:这个格式字符串只指定了保留两位小数,没有包含千位分隔规则。
内容的提问来源于stack exchange,提问作者KurczakChrupiacy2
相关产品推荐
相关产品推荐

