如何在Pandas DataFrame中提取uncertainties模块的标称值与不确定度
解决方案
你可以直接使用uncertainties配套的unumpy模块提供的批量提取方法,直接从已生成的DataFrame中拆分标称值与不确定度,无需依赖原始构造时的数组。
完整实现代码
from uncertainties import unumpy import pandas as pd import numpy as np # 你的原始AB DataFrame(此处仅为示例,可替换为你前置计算输出的AB) A_n = 100 * np.random.rand(10) A_s = np.random.rand(10) B_n = 100 * np.random.rand(10) B_s = np.random.rand(10) AB = pd.DataFrame({'A':unumpy.uarray(A_n, A_s), 'B': unumpy.uarray(B_n, B_s)}) # 拆分标称值与不确定度 processed = pd.DataFrame() for col in AB.columns: # 提取当前列标称值 processed[col] = unumpy.nominal_values(AB[col]) # 提取当前列对应不确定度 processed['+/-'] = unumpy.std_devs(AB[col]) # 导出到Excel AB_writer = pd.ExcelWriter('A.xlsx', engine = 'xlsxwriter', options={'strings_to_numbers': True}) processed.to_excel(AB_writer, sheet_name = 'Data', index=False, na_rep='nan') AB_writer.close()
说明
- 该实现完全适配你无法获取原始标称值、不确定度数组的场景,所有提取操作都基于已生成的AB DataFrame完成
- 输出的表头顺序、内容和你期望的效果完全一致,数值会自动保留原始精度
- 如果列数较多,也可以自定义不确定度列的命名规则,比如将
processed['+/-']改为processed[f'{col}_±']避免重复列名
内容的提问来源于stack exchange,提问作者Tom Kurushingal
相关产品推荐
相关产品推荐

