【问题标题】:Pandas data frame. Change float format. Keep type "float"熊猫数据框。更改浮点格式。保持类型“浮动”
【发布时间】:2019-06-20 01:29:52
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 我要求两种方式:0.00 并且完全没有小数,但保持浮点类型。
  • 如果我没记错格式是字符串方法。尝试使用圆点法与点后的位数。即round(age,2) 或round(age,0)
  • 所以,当你做df.Age时,它本身必须是一个浮点数。
  • @LiorT,谢谢,我试试 df.Age.round(2),但我又做错了。

标签: python pandas decimal rounding precision


【解决方案1】:

你的 dataFrame 本身就是一个 float 类型。

数据框:

>>> 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, 3224.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

【讨论】:

  • 谢谢。那么有没有办法将这些浮点数保持为 .2f 或 .0f 格式的浮点数?
  • @Jerry,查看更新后的答案,希望对您有所帮助。
  • 非常感谢您的帮助!正是我想要的。
【解决方案2】:

我相信使用 df.round 是最好的方法:

>>> df = pd.DataFrame({'Age': [24.0, 32.0]})
>>> df2 = df.round({'Ages': 2})
>>> print(df2.dtypes)
>>> df2
    Age
0   24.00
1   32.00

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.round.html

【讨论】:

    【解决方案3】:

    如果要应用于数据框的特定列

    df["col_name"] = df["col_name"].apply(lambda x: format(float(x),".2f"))
    

    【讨论】:

      猜你喜欢
      • 2019-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多