如何让Pandas读取Excel后的DataFrame中FX Rate列保留两位小数?
解决FX Rate列显示两位小数的问题
问题原因分析
你之前指定dtype={'FX Rate':str}导致列值全变成"1",大概率是因为Excel中该列的单元格数据类型不统一(部分是数值型、部分是文本型),或者数值在Excel里以整数形式存储(比如1.00显示为1),强制转字符串时出现了异常。正确的做法是先正常读取数据,再针对性处理显示格式。
具体解决方案
以下是几种实用的处理方式,按需选择:
全局设置浮点数显示格式(仅改变显示,不修改数据)
适合希望整个DataFrame的浮点数都统一显示两位小数的场景:import pandas as pd # 正常读取Excel,无需指定FX Rate的dtype df = pd.read_excel('你的文件路径.xlsx') # 设置全局浮点数显示两位小数 pd.set_option('display.float_format', '{:.2f}'.format)仅针对FX Rate列设置显示格式(适合局部格式化)
使用style方法,仅对目标列设置显示格式,不修改原始数据,适合报表展示场景:# 读取数据 df = pd.read_excel('你的文件路径.xlsx') # 对FX Rate列设置两位小数显示 styled_df = df.style.format({'FX Rate': '{:.2f}'}) # 在终端或Jupyter中查看格式化后的结果 print(styled_df)修改数据本身为带两位小数的格式(如需存储为字符串)
如果需要将FX Rate列的数据本身存储为带两位小数的字符串(不推荐,除非业务要求),可以先转数值型再格式化:df = pd.read_excel('你的文件路径.xlsx') # 确保列是数值型,保留两位小数后转字符串 df['FX Rate'] = pd.to_numeric(df['FX Rate'], errors='coerce').round(2).astype(str)注:
errors='coerce'会将无法转为数值的内容设为NaN,可根据实际情况调整。
内容的提问来源于stack exchange,提问作者Xiaolisworkinghard
相关产品推荐
相关产品推荐

