如何访问Pandas DataFrame中的标称值和不确定性?



我正在使用不确定性模块以及熊猫。目前,我可以将包含不确定性的数据框一起输出到电子表格中。我的主要目标是在相邻的列中编写具有不确定性的数据框。而是如何访问数据框架内的标称值或不确定性。MWE如下:

当前输出

<表类> B tbody><<tr>63.2 +/- -0.975.4 +/- -0.941.94 +/- -0.0553.12 +/- -0.214.1 +/- -0.489.51 +/- -0.3228.2 +/- -0.510.6 +/- -0.625.8 +/- -0.939.03 +/- -0.0827.26 +/- -0.0944.61 +/- -0.3525.04 +/- -0.1337.7 +/- -0.62.4 +/- -0.550.0 +/- -0.80.92 +/- -0.213.1 +/- -0.557.69 +/- -0.3421.8 +/- -0.8

所有的答案都没有考虑到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

相关内容

  • 没有找到相关文章

最新更新