来自不同数据帧的总和值

2024-10-01 00:27:42 发布

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

我有以下数据帧:

print(X)

Quantity   Class    
   1         0
   5         0
   6         1
   8         2
   9         3
   0         4
...

print(dframe)

   Pred_class    Delta
           0  -0.046348
           1   1.856508
           2  20.347518
           3  -7.138728
           4   6.642686

我想为每个类别的X-“Final_Q”-X[“Quantity”]和相应的“Delta”之和创建一个附加列:

打印(X)

Quantity   Class    Final_Q  
   1         0        1 - (-0.046348) 
   5         0        5 - (-0.046348)
   6         1        6 - (+1.856508)
...

我试过:

for i in np.unique(X["Class"]):

        #Isolate     
        X["Class"] == i
        dframe["Pred_class"] == i

        X_test_virtuale["BOOST"] = X_test_virtuale["ALG_N_forecast"] - dframe.iloc[0,0]

但它似乎不能正常工作


Tags: 数据intestfornp类别quantityclass
2条回答

您可以在重命名Pred_class后使用pandas merge\u asof,如下所示

dframe = dframe.rename(columns={'Pred_class':'Class'}) s = pd.merge_asof(X, dframe, on='Class') s['FinalQ'] = s['Quantity'] - s['Class']

Index Quantity Class Delta FinalQ 0 1 0 -0.04 1 1 5 0 -0.04 5 2 6 1 1.90 5 3 8 2 20.30 6 4 9 3 -7.00 6 5 0 4 6.60 -4

如果我理解正确,首先要合并:

 X = X.merge(dframe, how='left', left_on='Class', right_on='Pred_class')

然后,您只需按常规添加:

 X['Final_Q'] = X['Quantity'] + X['Delta']

这将为您带来:

   Class  Quantity      Delta  Pred_class    Final_Q
0      0         1  -0.046348           0   0.953652
1      0         5  -0.046348           0   4.953652
2      1         6   1.856508           1   7.856508
3      2         8  20.347518           2  28.347518
4      3         9  -7.138728           3   1.861272
5      4         0   6.642686           4   6.642686

相关问题 更多 >