如何在Python中移除Pandas DataFrame输出指定数值的尾随零?
解决方案
要实现仅移除Shimi列中15.00和20.00的尾随零,同时保留16.25的小数格式,你可以根据需求选择以下两种方法:
方法一:仅修改显示格式(推荐,不改变数据类型)
这种方法只调整输出时的显示效果,数据依然保持数值类型,不影响后续的数据分析计算。通过style.format针对Shimi列设置自定义格式化规则:
import pandas as pd data = [[18, 16.25, 14, 17], [12, 15, 13, 15], [19, 20, 18, 17]] y = pd.DataFrame( data, index=["Ali", "Mohammad", "Reza"], columns=["Physics", "Shimi", "Riazi", "Adabiat"]) # 自定义格式化函数:整数浮点数显示为整数,非整数保留两位小数 styled_df = y.style.format({'Shimi': lambda x: f'{x:.0f}' if x.is_integer() else f'{x:.2f}'}) # 转换为字符串打印 print(styled_df.to_string())
输出结果:
Physics Shimi Riazi Adabiat Ali 18 16.25 14 17 Mohammad 12 15 13 15 Reza 19 20 18 17
方法二:将列转换为格式化后的字符串(适合仅展示场景)
如果不需要对Shimi列进行数值运算,可以直接将该列转换为格式化后的字符串类型:
import pandas as pd data = [[18, 16.25, 14, 17], [12, 15, 13, 15], [19, 20, 18, 17]] y = pd.DataFrame( data, index=["Ali", "Mohammad", "Reza"], columns=["Physics", "Shimi", "Riazi", "Adabiat"]) # 转换Shimi列为格式化字符串 y['Shimi'] = y['Shimi'].apply(lambda x: str(int(x)) if x.is_integer() else str(x)) print(y)
输出结果:
Physics Shimi Riazi Adabiat Ali 18 16.25 14 17 Mohammad 12 15 13 15 Reza 19 20 18 17
注意:第二种方法会把Shimi列的数据类型从浮点数转为字符串,后续无法直接进行数值计算,需谨慎使用。
内容的提问来源于stack exchange,提问作者Mohammad Tajedini
相关产品推荐
相关产品推荐

