我正在使用不确定性模块以及熊猫。目前,我可以将包含不确定性的数据框一起输出到电子表格中。我的主要目标是在相邻的列中编写具有不确定性的数据框。而是如何访问数据框架内的标称值或不确定性。MWE如下:
当前输出
所有的答案都没有考虑到OP正在使用不确定性包。本文或用户手册中问题的正确答案是使用
unumpy.nominal_values(arr)
和
unumpy.std_devs(arr)
其中arr是您的pandas列
您可以映射列以获得您正在寻找的结果。下面的代码映射A
列(确保没有将两个列分配给相同的列键'+/-'
)
AB[['A', '+/-']] = AB.A.apply(lambda x: str(x).split('+/-')).to_list()
将它们分成不同的列:
Au = unumpy.uarray(A_n, A_s)
Bu = unumpy.uarray(B_n, B_s)
AB = pd.DataFrame({'A': unumpy.nominal_values(Au), 'A+/-': unumpy.std_devs(Au), 'B': unumpy.nominal_values(Bu), 'B+/-': unumpy.std_devs(Bu)})
可以使用str.split()
将每一列拆分为主值一列和不确定值一列,如下所示:
# add the column labels here if you have more columns to process
# e.g. `for col in AB[['A', 'B', 'C']]:` if you want to process columns `A`, `B` and `C`
for col in AB[['A', 'B']]:
AB[[col, f'{col}+/-']] = AB[col].str.split(r'+/-', expand=True)
# sort the columns to put the related columns together
AB = AB.sort_index(axis=1)
不建议在同一个数据框架中有2个具有相同列标签的列。在这里,我们将+/-
列与它们各自的源列名一起命名,以便区分它们。
在这里,我们还使用.sort_index()
对列名进行排序,使相关的列彼此相邻。
结果:
print(AB)
A A+/- B B+/-
0 63.2 0.9 75.4 0.9
1 41.94 0.05 53.12 0.21
2 4.1 0.4 89.51 0.32
3 28.2 0.5 10.6 0.6
4 25.8 0.9 39.03 0.08
5 27.26 0.09 44.61 0.35
6 25.04 0.13 37.7 0.6
7 2.4 0.5 50.0 0.8
8 0.92 0.21 3.1 0.5
9 57.69 0.34 21.8 0.8