Proj_Com_Sum   comp_1   comp_2    comp_3   Proj_Val_sum  val_1  val_2  val_3
70              10         20      35       67            20      30    15
100             50         30      25       70            25      30    15

鉴于以上作为 Pandas DataFrame df,我想添加一个 Colunm Com_total 、 Val_total 、 Proj_Tot_Diff


Com_total = comp_1 + comp_2 + comp_3
Val_total = val_1 + val_2 + val_3
Proj_Tot_Diff = Com_total - Proj_Com_Sum

因为我有关于 comp .. 这将是一个很长的代码
Com_total = comp_1 + comp_2 + comp_3 .. comp_58

请注意 comp_1..comp_2 可能不遵循正则表达式模式。
它可能是一些州名,如佛罗里达州、纽约州等。
我们所知道的是要添加到第 58 列的第 2 列。

因此,我想要一些像
 df['Com_total']= df[ col 2:58 ].sum
 # Whats the correct Syntax

如何以精确的表示法指定在列之间。请帮助正确的语法

最佳答案

编辑 :与您的编辑一样。要从连续的第 2 列到第 58 列求和,您只需在列上使用 .iloc1:58,因为整数 loc 从 0 开始,而 iloc 忽略右边缘编号。

df['Com_total'] = df.iloc[:,1:58].sum(1)

原始 :
这是一个疯狂/有趣的解决方案,在列名和 extract 上使用 groupbysum 。最后, join 回到 df
df.join(df.groupby(df.columns.str.extract('(comp_|val_)'), axis=1).sum(axis=1) \
          .add_suffix('total').assign(Proj_Tot_Diff= lambda x: x.comp_total - df.Proj_Com_Sum))


Out[1958]:
   Proj_Com_Sum  comp_1  comp_2  comp_3  Proj_Val_sum  val_1  val_2  val_3  \
0            70      10      20      35            67     20     30     15
1           100      50      30      25            70     25     30     15

   comp_total  val_total  Proj_Tot_Diff
0          65         65             -5
1         105         70              5

关于python - 如何以精确的表示法指定 'In Between Columns' 总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56860325/

10-12 17:02