首页 > 解决方案 > 熊猫数据框。更改浮点格式。保持类型“浮动”

问题描述

我正在尝试在不更改数据类型的情况下更改 pd 数据框列的格式。这是我所拥有的:df = pd.DataFrame({'Age': [24.0, 32.0}])

我想以24 32 类型表示 Age 或24.00 32.00将它们保留为浮点数。这是我能做的:

df['Age'].map('{:,.2f}'.format)

但是这一行将数据类型更改为对象。我也在尝试申请:`

df = df.style.format({'Age': '{:,.2f}'.format})`

但它有问题。请帮助找出正确的方法。

标签: pythonpandasdecimalroundingprecision

解决方案


您的 dataFrame 本身就是一个浮点类型。

数据框:

>>> df
    Age
0  24.0
1  32.0

检查 DataFrame 类型:

>>> df.dtypes
Age    float64
dtype: object

检查 DataFrame 列类型的 dtype:

>>> df.Age
0    24.0
1    32.0
Name: Age, dtype: float64

或者甚至检查:

>>> df['Age'].dtype.kind
'f'

您用来四舍五入两位数零的方式是正确的,但再次将它们转换为浮点数将使它们保持在单零中作为浮点数。

>>> df['Age'].map('{:,.2f}'.format)
0    24.00
1    32.00
Name: Age, dtype: object

如果您有兴趣保留类似 int 值的模拟,24, 32或者24.00 & 32.00,如果您只对浮点数的显示感兴趣,那么您可以这样做pd.set_option('display.float_format','{:.0f}'.format),这实际上不会影响您的数据。

对于没有前导零的浮点格式

>>> pd.set_option('display.float_format','{:.0f}'.format)
>>> df
   Age
0   24
1   32

>>> df.dtypes
Age    float64
dtype: object

对于浮动格式

>>> pd.set_option('display.float_format','{:.2f}'.format)
>>> df
    Age
0 24.00
1 32.00
>>> df.dtypes
Age    float64
dtype: object

替代方式

设置显示精度选项:

>>> pd.set_option('precision', 0)
>>> df
   Age
0   24
1   32

>>> df.dtypes
Age    float64
dtype: object

推荐阅读