【问题标题】:Sum values from different dataframes来自不同数据帧的总和值
【发布时间】:2018-12-26 21:58:12
【问题描述】:

我有以下数据框:

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]

但它似乎无法正常工作;

【问题讨论】:

    标签: python group-by conditional-statements


    【解决方案1】:

    您可以在重命名Pred_class 后使用 pandas merge_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

    【讨论】:

      【解决方案2】:

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

       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
      

      【讨论】:

      • 应该是“-X['Delta']”而不是“+”;其余的工作完美
      猜你喜欢
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      • 2018-06-26
      • 2023-03-04
      • 2022-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多