熊猫操作将每两行组合在一起



我有一个数据帧,如下所示:

from uncertainties import ufloat # pip3 uncertainties.py 
import random
random.seed(0)
values = [[round(random.random(),2) for i in range(3)] for j in range(4)]
df = pd.DataFrame(values, index=['name1','sd', 'name2', 'sd'], columns=['A','B','C'])

我想重新排列数据,我将平均值和 sd 合并为一行,作为 ufloat,其中所需的输出如下所示:

new_values = [[ufloat(0.91,0.90), ufloat(0.98,0.31), ufloat(0.81,0.73)],
[ufloat(0.90,0.10), ufloat(0.68,0.43), ufloat(0.47, 0.61)]]
df = pd.DataFrame(new_values, index=['name1', 'name2'], columns=['A','B','C'])

我认为创建两个数据帧并以某种方式组合它们可能是最简单的

mean = df.iloc[::2].reset_index()
std  = df.iloc[1::2].reset_index()

现在我需要合并两者并应用 ufloat

这是我当前的解决方案:

mean = df.iloc[::2]
std  = df.iloc[1::2]
tmp = np.array([ufloat(x[0], x[1]) for x 
in zip(mean.values.ravel(), std.values.ravel())])
df = pd.DataFrame(tmp.reshape(mean.shape), columns=mean.columns, index=mean.index)

最新更新