如何使用另一个数据帧获取数据帧

时间:2021-04-02 05:53:55

标签: python dataframe

我有这些数据框:

                          DP1         DP2         DP3         DP4         DP5         DP6         DP7         DP8        DP9       DP10       Total
OP1                  357848.0   1124788.0   1735330.0   2218270.0   2745596.0   3319994.0   3466336.0   3606286.0  3833515.0  3901463.0   3901463.0
OP2                  352118.0   1236139.0   2170033.0   3353322.0   3799067.0   4120063.0   4647867.0   4914039.0  5339085.0        NaN   5339085.0
OP3                  290507.0   1292306.0   2218525.0   3235179.0   3985995.0   4132918.0   4628910.0   4909315.0        NaN        NaN   4909315.0
OP4                  310608.0   1418858.0   2195047.0   3757447.0   4029929.0   4381982.0   4588268.0         NaN        NaN        NaN   4588268.0
OP5                  443160.0   1136350.0   2128333.0   2897821.0   3402672.0   3873311.0         NaN         NaN        NaN        NaN   3873311.0
OP6                  396132.0   1333217.0   2180715.0   2985752.0   3691712.0         NaN         NaN         NaN        NaN        NaN   3691712.0
OP7                  440832.0   1288463.0   2419861.0   3483130.0         NaN         NaN         NaN         NaN        NaN        NaN   3483130.0
OP8                  359480.0   1421128.0   2864498.0         NaN         NaN         NaN         NaN         NaN        NaN        NaN   2864498.0
OP9                  376686.0   1363294.0         NaN         NaN         NaN         NaN         NaN         NaN        NaN        NaN   1363294.0
OP10                 344014.0         NaN         NaN         NaN         NaN         NaN         NaN         NaN        NaN        NaN    344014.0
Total               3671385.0  11614543.0  17912342.0  21930921.0  21654971.0  19828268.0  17331381.0  13429640.0  9172600.0  3901463.0  34358090.0
Latest Observation   344014.0   1363294.0   2864498.0   3483130.0   3691712.0   3873311.0   4588268.0   4909315.0  5339085.0  3901463.0         NaN


                       DP1       DP2       DP3       DP4       DP5       DP6       DP7       DP8       DP9  DP10  Total
OP1               3.143200  1.542806  1.278299  1.237719  1.209207  1.044079  1.040374  1.063009  1.017725   NaN    NaN
OP2               3.510582  1.755493  1.545286  1.132926  1.084493  1.128106  1.057268  1.086496       NaN   NaN    NaN
OP3               4.448450  1.716718  1.458257  1.232079  1.036860  1.120010  1.060577       NaN       NaN   NaN    NaN
OP4               4.568002  1.547052  1.711784  1.072518  1.087360  1.047076       NaN       NaN       NaN   NaN    NaN
OP5               2.564198  1.872956  1.361545  1.174217  1.138315       NaN       NaN       NaN       NaN   NaN    NaN
OP6               3.365588  1.635679  1.369162  1.236443       NaN       NaN       NaN       NaN       NaN   NaN    NaN
OP7               2.922798  1.878099  1.439393       NaN       NaN       NaN       NaN       NaN       NaN   NaN    NaN
OP8               3.953288  2.015651       NaN       NaN       NaN       NaN       NaN       NaN       NaN   NaN    NaN
OP9               3.619179       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   NaN    NaN
OP10                   NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN   NaN    NaN
Weighted Average  3.490607  1.747333  1.457413  1.173852  1.103824  1.086269  1.053874  1.076555  1.017725   inf    NaN

我需要这样的数据框:

          DP 1        DP 2        DP 3        DP 4    DP 5       DP 6    DP 7   DP 8    DP 9
OP 1     43,189      47,051      55,673      9,049   30,492      5,910   632     662     -   
OP 2     140           82        16,756      5,616   1,420       7,211   54      486    
OP 3     2,66,530    1,211          2        10,968  17,874      4,705   208        
OP 4     3,60,548    56,914      1,42,030    38,584   1,092      6,731          
OP 5     3,80,334    17,933      19,561         0     4,048                 
OP 6     6,191       16,621      16,984      11,697                     
OP 7     1,42,127    22,032      786                        
OP 8     76,955      1,02,314                           
OP 9     6,227                              
OP 10               

我必须使用公式得到上面的三角形 要获得结果三角形的第一个值(43189)是 = 357848*(3.143200-3.490607)^2 要获得结果三角形的第二个值(140)是 = 352118*(3.510582-3.490607)^2 等等.., 而且我必须切换到所有列,并且每列数据都是唯一的公式。

1 个答案:

答案 0 :(得分:1)

让我们首先从第一个数据帧(我假设它叫做 df1)创建一个新的数据帧,省略最后一列和最后两行:

df_new = df1.loc[:, :'DP10'][:-2].copy()

然后我们遍历列并对每列进行计算(假设您的第二个数据框称为 df2),同时使用 Weighted Average 访问 df2[colname][-1],因为它是 { 中的最后一项{1}} 的列:

df2

这将输出:

<头>
DP1 DP2 DP3 DP4 DP5 DP6 DP7 DP8 DP9 DP10
OP1 43189 47051 55673 9048 30491 5910 632 662 0 nan
OP2 140 82 16756 5617 1420 7211 54 486 nan nan
OP3 266529 1211 2 10968 17874 4705 208 nan nan nan
OP4 360548 56914 142030 38584 1092 6731 nan nan nan nan
OP5 380335 17933 19561 0 4048 nan nan nan nan nan
OP6 6191 16621 16984 11697 nan nan nan nan nan nan
OP7 142127 22032 786 nan nan nan nan nan nan nan
OP8 76955 102313 nan nan nan nan nan nan nan nan
OP9 6227 nan nan nan nan nan nan nan nan nan
OP10 nan nan nan nan nan nan nan nan nan nan
相关问题