将逗号添加到小数列而不四舍五入
Add commas to decimal column without rounding off
我有 pandas 列名为 Price_col。看起来像这样。
Price_col
1. 1000000.000
2. 234556.678900
3. 2345.00
4.
5. 23.56
我正在尝试在 Price_col 中添加逗号,使其看起来像这样。
Price_col
1. 1,000,000.000
2. 234,556.678900
3. 2,345.00
4.
5. 23.56
当我尝试转换值时,它总是四舍五入。有没有什么办法可以不用四舍五入就得到原来的值呢
我试过下面的代码。这是我得到的值 234556.678900.
n = "{:,}".format(234556.678900)
print(n)
>>> 234,556.6789
为 fixed-point
添加 f
>>> "{:,}".format(234556.678900)
'234,556.6789'
>>> "{:,f}".format(234556.678900)
'234,556.678900'
您还可以使用 .p
控制精度,其中 p 是位数(并且应该这样做).. 注意,因为您正在处理使用浮点数,您将有一些 IEEE 754 aliasing,但无论支持数据如何,通过格式表示应该相当不错
>>> "{:,.5f}".format(234556.678900)
'234,556.67890'
>>> "{:,.20f}".format(234556.678900)
'234,556.67889999999897554517'
完整的格式规范Mini-Language可在此处找到:
https://docs.python.org/3/library/string.html#format-specification-mini-language
从您的评论中,我意识到您可能真的想要 How to display pandas DataFrame of floats using a format string for columns? 中描述的其他内容,并且只更改数据的 视图
创建一个新的 字符串 列格式为字符串
>>> df = pd.DataFrame({"Price_col": [1000000.000, 234556.678900, 2345.00, None, 23.56]}
>>> df["price2"] = df["Price_col"].apply(lambda x: f"{x:,f}")
>>> df
Price_col price2
0 1000000.0000 1,000,000.000000
1 234556.6789 234,556.678900
2 2345.0000 2,345.000000
3 NaN nan
4 23.5600 23.560000
>>> df.dtypes
Price_col float64
price2 object
dtype: object
暂时更改数据的显示方式
>>> df = pd.DataFrame({"Price_col": [1000000.000, 234556.678900, 2345.00, None, 23.56]}
>>> print(df)
Price_col
0 1000000.0000
1 234556.6789
2 2345.0000
3 NaN
4 23.5600
>>> with pd.option_context('display.float_format', '€{:>18,.6f}'.format):
... print(df)
...
Price_col
0 € 1,000,000.000000
1 € 234,556.678900
2 € 2,345.000000
3 NaN
4 € 23.560000
>>> print(df)
Price_col
0 1000000.0000
1 234556.6789
2 2345.0000
3 NaN
4 23.5600
我有 pandas 列名为 Price_col。看起来像这样。
Price_col
1. 1000000.000
2. 234556.678900
3. 2345.00
4.
5. 23.56
我正在尝试在 Price_col 中添加逗号,使其看起来像这样。
Price_col
1. 1,000,000.000
2. 234,556.678900
3. 2,345.00
4.
5. 23.56
当我尝试转换值时,它总是四舍五入。有没有什么办法可以不用四舍五入就得到原来的值呢
我试过下面的代码。这是我得到的值 234556.678900.
n = "{:,}".format(234556.678900)
print(n)
>>> 234,556.6789
为 fixed-point
添加f
>>> "{:,}".format(234556.678900)
'234,556.6789'
>>> "{:,f}".format(234556.678900)
'234,556.678900'
您还可以使用 .p
控制精度,其中 p 是位数(并且应该这样做).. 注意,因为您正在处理使用浮点数,您将有一些 IEEE 754 aliasing,但无论支持数据如何,通过格式表示应该相当不错
>>> "{:,.5f}".format(234556.678900)
'234,556.67890'
>>> "{:,.20f}".format(234556.678900)
'234,556.67889999999897554517'
完整的格式规范Mini-Language可在此处找到:
https://docs.python.org/3/library/string.html#format-specification-mini-language
从您的评论中,我意识到您可能真的想要 How to display pandas DataFrame of floats using a format string for columns? 中描述的其他内容,并且只更改数据的 视图
创建一个新的 字符串 列格式为字符串
>>> df = pd.DataFrame({"Price_col": [1000000.000, 234556.678900, 2345.00, None, 23.56]}
>>> df["price2"] = df["Price_col"].apply(lambda x: f"{x:,f}")
>>> df
Price_col price2
0 1000000.0000 1,000,000.000000
1 234556.6789 234,556.678900
2 2345.0000 2,345.000000
3 NaN nan
4 23.5600 23.560000
>>> df.dtypes
Price_col float64
price2 object
dtype: object
暂时更改数据的显示方式
>>> df = pd.DataFrame({"Price_col": [1000000.000, 234556.678900, 2345.00, None, 23.56]}
>>> print(df)
Price_col
0 1000000.0000
1 234556.6789
2 2345.0000
3 NaN
4 23.5600
>>> with pd.option_context('display.float_format', '€{:>18,.6f}'.format):
... print(df)
...
Price_col
0 € 1,000,000.000000
1 € 234,556.678900
2 € 2,345.000000
3 NaN
4 € 23.560000
>>> print(df)
Price_col
0 1000000.0000
1 234556.6789
2 2345.0000
3 NaN
4 23.5600