组合每两行的操作

2024-10-02 04:34:23 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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'])

我想重新排列数据,把均值和标准差合并成一行,作为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


Tags: 数据inimportdataframedfforindexrange
1条回答
网友
1楼 · 发布于 2024-10-02 04:34:23

这是我目前的解决方案:

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)

相关问题 更多 >

    热门问题