【问题标题】:Computing sum of a dataframe and appending it at the top计算数据帧的总和并将其附加在顶部
【发布时间】:2018-01-25 06:47:31
【问题描述】:

这是一个示例数据框。 set_index 用于将 Constraint_ID 设置为索引,与其余列不对齐。

我想要的是将 TotalSP、Onpeak 和 Offpeak 的总和放在正下方的空间中(由于未对齐而创建的空间)。那可能吗?如果没有,我可以在显示列总数的列标签下方创建另一行吗?

         Constraint Name    TotalSP       Onpeak    Offpeak
Constraint_ID               
77127   aaaaaaaaaaaaaaaaaa  -2174.5     -2027.21    -147.29
98333   bbbbbbbbbbbbbbbbbb  -1180.62    -1180.62     0
1049    cccccccccccccccccc  -1036.53    -886.77     -149.76

【问题讨论】:

  • 您希望总和成为数据框的另一行吗?新行的 Constraint_ID 和 Constraint Name 是什么?
  • DZY - 该行没有约束 ID。约束名称为约束名称列的计数。

标签: python pandas dataframe sum append


【解决方案1】:

首先,您可以使用df.sum 计算总和:

In [189]: df2 = df.iloc[:, 1:].sum().to_frame().T.rename({0 : 'sum'}); df2
Out[189]: 
     TotalSP  Onpeak  Offpeak
sum -4391.65 -4094.6  -297.05

接下来,您可以使用 pd.concat 将其与您的第一个数据帧连接起来:

In [191]: pd.concat([df2, df])
Out[191]: 
          Constraint Name  Offpeak   Onpeak  TotalSP
sum                   NaN  -297.05 -4094.60 -4391.65
77127  aaaaaaaaaaaaaaaaaa  -147.29 -2027.21 -2174.50
98333  bbbbbbbbbbbbbbbbbb     0.00 -1180.62 -1180.62
1049   cccccccccccccccccc  -149.76  -886.77 -1036.53

免责声明,除非您只想将其写入 csv,否则我不建议这样做。

【讨论】:

  • 谢谢。在 sum 为 NaN 的约束名称下,我如何获得计数?
  • @ShyamaSonti 对于本例,您希望计数为 3?
  • @ShyamaSonti 这可以做到:df3 = pd.concat([df2, df]); df3.loc['sum', 'Constraint Name'] = len(df)
猜你喜欢
  • 1970-01-01
  • 2019-09-17
  • 1970-01-01
  • 2018-02-08
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
相关资源
最近更新 更多