首先创建一个示例数据框:
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']
四位小数。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})
要转换科学计数法并四舍五入到指定的小数位,可以使用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 参数用于保留小数值的格式。