python-3.x 如何转换科学记数法并四舍五入到指定的小数位?

myss37ts  于 2023-03-20  发布在  Python
关注(0)|答案(1)|浏览(135)

首先创建示例 Dataframe :

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})
mm9b1k5b

mm9b1k5b1#

要转换科学记数法并四舍五入到指定的小数位,可以使用panda 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参数用于保留值的小数格式。

相关问题