Pandas 数据框。更改浮动格式。保留类型 "float"
Pandas data frame. Change float format. Keep type "float"
我正在尝试更改 pd 数据框列的格式而不更改数据类型。
这是我的:df = pd.DataFrame({'Age': [24.0, 32.0}])
我想在 24 32
类型或 24.00 32.00
中表示年龄并将它们保留为浮点数。
这是我能做的:
df['Age'].map('{:,.2f}'.format)
但是这一行将数据类型更改为对象。
我也在尝试申请:`
df = df.style.format({'Age': '{:,.2f}'.format})`
但其中有问题。请帮助找出正确的方法。
你的 dataFrame 本身是一个 float 类型。
数据框:
>>> df
Age
0 24.0
1 32.0
检查 DataFrame 类型:
>>> df.dtypes
Age float64
dtype: object
检查 DataFrame 列类型的数据类型:
>>> 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
我认为使用 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
如果要应用于数据框的特定列
df["col_name"] = df["col_name"].apply(lambda x: format(float(x),".2f"))
我正在尝试更改 pd 数据框列的格式而不更改数据类型。
这是我的:df = pd.DataFrame({'Age': [24.0, 32.0}])
我想在 24 32
类型或 24.00 32.00
中表示年龄并将它们保留为浮点数。
这是我能做的:
df['Age'].map('{:,.2f}'.format)
但是这一行将数据类型更改为对象。 我也在尝试申请:`
df = df.style.format({'Age': '{:,.2f}'.format})`
但其中有问题。请帮助找出正确的方法。
你的 dataFrame 本身是一个 float 类型。
数据框:
>>> df
Age
0 24.0
1 32.0
检查 DataFrame 类型:
>>> df.dtypes
Age float64
dtype: object
检查 DataFrame 列类型的数据类型:
>>> 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
我认为使用 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
如果要应用于数据框的特定列
df["col_name"] = df["col_name"].apply(lambda x: format(float(x),".2f"))