使用pandas处理CSV文件时如何将数值转为指定格式科学计数法
可行实现方案
- 方案1:直接在
to_csv方法中指定float_format参数(最简便,适用于全表浮点列统一格式的场景)
默认输出两位指数的科学计数法,修改后的完整函数如下:
import pandas as pd def convert_file(file, columns, name): df = pd.read_csv(file, header=0, delimiter=',') df.drop(df.columns[columns], axis=1, inplace=True) # %.7e对应保留7位小数的科学计数法,可根据需求调整小数点后位数 df.to_csv(name, index=False, header=False, float_format='%.7e')
- 方案2:自定义格式化函数转换(可严格匹配示例中3位指数的输出要求,也支持单独处理指定列)
如果需要指数部分补前导零到3位、或者仅部分列需要转换格式,可以用如下实现:
import pandas as pd def format_to_sci(num): # 先转成标准科学计数法字符串拆分基数和指数 base_str, exp_str = "{:.7e}".format(num).split('e') # 指数部分补前导零到3位,匹配示例格式 exp_full = f"{exp_str[0]}{exp_str[1:].zfill(3)}" return f"{base_str}e{exp_full}" def convert_file(file, columns, name): df = pd.read_csv(file, header=0, delimiter=',') df.drop(df.columns[columns], axis=1, inplace=True) # 选取所有数值类型列做转换,也可替换为自定义的列名列表 num_cols = df.select_dtypes(include='number').columns for col in num_cols: df[col] = df[col].apply(format_to_sci) df.to_csv(name, index=False, header=False)
内容的提问来源于stack exchange,提问作者Dezido
相关产品推荐
相关产品推荐

