【问题标题】:Dataframe: Computed row based on cell above and cell on the left数据框:基于上方单元格和左侧单元格的计算行
【发布时间】:2019-10-28 18:24:26
【问题描述】:

我有一个包含一堆整数值的数据框。然后我计算列总数并将其作为新行附加到数据框中。到目前为止一切顺利。

现在我想追加另一个计算行,其中每个单元格的值是上方单元格和左侧单元格的总和。您可以在下面看到我的意思:

 ----------------------------------------------------------------
|250000 |0      |145000 |145000 |220000 |165000 |145000 |145000  |
 ----------------------------------------------------------------
|250000 |250000 |395000 |540000 |760000 |925000 |1070000|1215000 |
 ----------------------------------------------------------------

如何做到这一点?

【问题讨论】:

    标签: python-3.x pandas dataframe


    【解决方案1】:

    我认为您需要Series.cumsum 并通过DataFrame.iloc 选择最后一行(总行):

    df = pd.DataFrame({
             'B':[4,5,4],
             'C':[7,8,9],
             'D':[1,3,5],
             'E':[5,3,6],
    })
    
    df.loc['sum'] = df.sum()
    df.loc['cumsum'] = df.iloc[-1].cumsum()
    
    #if need only cumsum row
    #df.loc['cumsum'] = df.sum().cumsum()
    print (df)
             B   C   D   E
    0        4   7   1   5
    1        5   8   3   3
    2        4   9   5   6
    sum     13  24   9  14
    cumsum  13  37  46  60
    

    【讨论】:

    • @SilentUser - 欢迎您!小伙伴建议 - Please don't post images of code/data (or links to them) 防止被否决
    • 我一直想知道为什么我的问题得到了 3 票反对。谢谢你的链接,让我知道。我希望其他人在投票之前也这样做。我将删除图像。