如何转换科学计数法并四舍五入到指定小数位?

问题描述 投票:0回答:1

首先创建一个示例数据框:

import pandas as pd
data = {'num1': [123456789.123456],'num2': [123456789.123456]}
df = pd.DataFrame(data)
df
           num1          num2
0  1.234568e+08  1.234568e+08

我想显示

df
如下格式:

           num1          num2
0  123456789.12  123456789.1235

四舍五入

df['num1']
小数点后两位,
df['num2']
四位小数。
使用 sqlalchemy 语法,当
df
写入数据库时很简单(此处为部分代码):

dtype= {'num1':sqlalchemy.types.DECIMAL(precision=9,scale=2,asdecimal=True),
'num2':sqlalchemy.types.DECIMAL(precision=9,scale=4,asdecimal=True)}

astype表达式怎么写?

df.astype(dtype={'num1':format1,'num2':format2})
python python-3.x dataframe rounding
1个回答
0
投票

要转换科学计数法并四舍五入到指定的小数位,可以使用pandas dataframe的apply()方法对每个值进行格式化。例如,要将 df['num1'] 向上舍入到小数点后两位,将 df['num2'] 向上舍入到小数点后四位,可以使用如下代码:

df['num1'] = df['num1'].apply(lambda x: '{:.2f}'.format(x))
df['num2'] = df['num2'].apply(lambda x: '{:.4f}'.format(x))

这会将科学计数法的值转换为十进制格式,并将它们四舍五入到指定的小数位。

要用sqlalchemy语法编写astype表达式,可以使用sqlalchemy.types.DECIMAL()函数来指定小数列的精度和小数位。

例如:

import sqlalchemy

dtype = {
    'num1': sqlalchemy.types.DECIMAL(precision=9, scale=2, asdecimal=True),
    'num2': sqlalchemy.types.DECIMAL(precision=9, scale=4, asdecimal=True)
}

df = df.astype(dtype=dtype)

这会将“num1”列转换为精度为 9、小数位数为 2 的小数列,并将“num2”列转换为精度为 9、小数位数为 4 的小数列。请注意,asdecimal=True 参数用于保留小数值的格式。

© www.soinside.com 2019 - 2024. All rights reserved.