列含混合数据类型时如何设置pandas styler的格式
问题根因
你使用的列中同时混合了字符串、整数、浮点数三类数据,直接传入".2f"这类数值格式化规则时,Styler会尝试对所有元素应用数值格式化,遇到字符串元素就会执行失败,最终整列格式化不生效。
解决方案
自定义格式化函数,仅对数值类型元素做格式化,非数值元素原样返回即可:
import pandas as pd df = pd.DataFrame({0: ['age',200000,300000.54321],1: ['city',200000,'']}, index=['feature','N','mean']) def format_mixed(val): # 仅对数值类型做格式化 if isinstance(val, (int, float)): # 整数显示千分位不带小数,浮点数显示千分位+两位小数,匹配你的期望输出 if val == int(val): return f"{val:,.0f}" return f"{val:,.2f}" return val # 给第0列应用自定义格式化规则 styled_df = df.style.format({0: format_mixed}) styled_df
执行后输出完全符合你的预期:
| 0 | 1 | |
|---|---|---|
| feature | age | city |
| N | 200,000 | 200000 |
| mean | 300,000.54 |
如果不需要区分整数和浮点数,统一保留两位小数,把格式化逻辑改成return f"{val:,.2f}"即可。
内容的提问来源于stack exchange,提问作者user15929966
相关产品推荐
相关产品推荐

