如何消除pyplot表格中的数值小数位?
解决Pyplot表格显示多余小数位的问题
问题核心是合并后的DataFrame数值被Pyplot表格以浮点格式渲染,哪怕原始数据是整数。以下是几种可行的解决方法:
方法一:合并后统一转换数据类型
如果合并后的表格没有缺失值,直接将所有数值列转为整数类型:
frames = [country_tab, country_birth_tab] result = pd.concat(frames, axis=1) # 转为整数类型(无缺失值时适用) result = result.astype(int) # 后续绘图代码不变 ax = plt.subplot(111, frame_on=False) ax.xaxis.set_visible(False) ax.yaxis.set_visible(False) table2 = ax.table(cellText=result.values, colLabels=result.columns, loc='center') table2.auto_set_font_size(False) table2.set_fontsize(16) table2.scale(4,4) plt.show()
如果存在缺失值,用lambda表达式格式化每个元素:
result = result.applymap(lambda x: f"{int(x)}" if pd.notna(x) and isinstance(x, (int, float)) else x)
方法二:创建表格时指定单元格文本格式
直接在生成Pyplot表格时,手动将数值转为整数格式的字符串,精准控制显示效果:
frames = [country_tab, country_birth_tab] result = pd.concat(frames, axis=1) ax = plt.subplot(111, frame_on=False) ax.xaxis.set_visible(False) ax.yaxis.set_visible(False) # 逐行格式化数值为整数文本 cell_text = [] for _, row in result.iterrows(): formatted_row = [] for val in row: if isinstance(val, (int, float)) and pd.notna(val): formatted_row.append(f"{int(val)}") else: formatted_row.append(str(val)) cell_text.append(formatted_row) # 传入格式化后的文本创建表格 table2 = ax.table(cellText=cell_text, colLabels=result.columns, loc='center') table2.auto_set_font_size(False) table2.set_fontsize(16) table2.scale(4,4) plt.show()
为什么之前取整操作没生效?
如果之前用了round(0)之类的取整方法,结果仍然是浮点类型(比如5.0),Pyplot表格会默认显示为带小数的格式。只有将数据转为整数类型,或者直接转为无小数的字符串,才能彻底解决显示问题。
内容的提问来源于stack exchange,提问作者havaey
相关产品推荐
相关产品推荐

