【问题标题】:How to find the column product column in python dataframe如何在python数据框中找到列产品列
【发布时间】:2021-07-02 05:27:31
【问题描述】:

我有这样的数据框:

  DP 1    DP 2    DP 3    DP 4    DP 5    DP 6    DP 7    DP 8    DP 9   DP 10
 2.720   1.748   1.462   1.228   1.152   1.055   1.063   1.080   1.001  
 4.361   1.641   1.430   1.117   1.181   1.018   1.052   1.096      
 3.345   1.840   1.505   1.262   1.115   1.095   1.053          
 2.663   1.748   1.352   1.256   1.051   1.119              
 3.494   1.907   1.506   1.108   1.091                  
 3.104   1.559   1.458   1.092                      
 2.978   1.484   1.374                          
 3.066   1.695                              
 2.876                                                          
 1.179   1.699   1.439   1.179   1.116   1.073   1.055   1.089   1.001   1.000 

我必须找到这个:

 4.680   3.971   2.337   1.624   1.377   1.234   1.150   1.090   1.001   1.000 

通过公式: 我必须找到最后一行第一个元素和其余元素的乘积,即:product(1.179 to 1.000)=4.680 然后下一个产品(1.699 到 1.000)=3.971 等等......

PRODUCT(first:last)

PRODUCT(second:last)

PRODUCT(third:last)

等等……

【问题讨论】:

    标签: python pandas dataframe triangle


    【解决方案1】:

    假设您的数据框已经有最后一行,那么df.iloc[[-1]] 是:

     DP 1   DP 2   DP 3   DP 4   DP 5   DP 6   DP 7   DP 8   DP 9  DP 10
    1.179  1.699  1.439  1.179  1.116  1.073  1.055  1.089  1.001    1.0
    

    反转系列,取cumulative product

    df.iloc[-1][::-1].cumprod()
    # output
    DP 10    1.000000
    DP 9     1.001000
    DP 8     1.090089
    DP 7     1.150044
    DP 6     1.233997
    DP 5     1.377141
    DP 4     1.623649
    DP 3     2.336431
    DP 2     3.969596
    DP 1     4.680154
    

    要按原来的顺序取回,反转结果:

    df.iloc[-1][::-1].cumprod()[::-1]
    # output
    DP 1     4.680154
    DP 2     3.969596
    DP 3     2.336431
    DP 4     1.623649
    DP 5     1.377141
    DP 6     1.233997
    DP 7     1.150044
    DP 8     1.090089
    DP 9     1.001000
    DP 10    1.000000
    

    (这些数字看起来略有不同,因为您在问题中已将它们四舍五入。)

    【讨论】:

    • 谢谢你..!我要连续。
    • 我认为您不应该将它添加到一行中,但是 - 上面的结果是一个系列,因此要将其添加为一行,请执行以下操作:result = df.iloc[-1][::-1].cumprod()[::-1] 然后df = df.append(result, ignore_index=True)
    猜你喜欢
    • 2018-04-29
    • 2018-06-02
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    相关资源
    最近更新 更多