pandas Series提取数值时如何保留小数点后全部完整数值
问题解决方法
核心原因
time.round(6)未生效:Pandas的Series.round()方法默认返回新的Series对象,不会修改原变量,你未将计算结果赋值回time,因此原数据没有发生变化。- Pandas默认的浮点数显示规则会自动截断小数位,即便数值本身包含多位小数,打印时也只会展示统一的短小数位,该显示逻辑不影响内部真实存储的数值精度。
解决方案
方案1:仅调整本次打印格式(不修改全局配置,推荐)
打印时直接指定Series的输出格式即可看到完整小数位,同时修正round方法的赋值逻辑:
x = str(input('Enter file name with extension: ')) df = pd.read_csv(x, delimiter=";", dtype=float, na_values=["-∞", "∞"],) time = df['Time'].astype('float') time = time.round(6) # 把四舍五入结果赋值回原变量 print(time.to_string(float_format='%.6f')) # 指定打印时展示6位小数
方案2:全局修改Pandas浮点数显示精度
如果后续所有打印操作都需要展示多位小数,可以在代码开头修改全局配置:
import pandas as pd # 全局配置所有浮点数打印时展示6位小数 pd.set_option('display.float_format', '{:.6f}'.format) x = str(input('Enter file name with extension: ')) df = pd.read_csv(x, delimiter=";", dtype=float, na_values=["-∞", "∞"],) time = df['Time'].astype('float') time = time.round(6) print(time) # 直接打印即可展示完整小数位
注意事项
如果仅需要使用时间列数值做后续计算,无需修改显示规则,Pandas内部已经存储了完整的浮点精度,打印截断不影响实际计算结果,直接取time的数值使用即可。
内容的提问来源于stack exchange,提问作者lqope54
相关产品推荐
相关产品推荐

