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 列求和,您只需在列上使用 .iloc
和 1:58
,因为整数 loc 从 0
开始,而 iloc
忽略右边缘编号。
df['Com_total'] = df.iloc[:,1:58].sum(1)
原始 :
这是一个疯狂/有趣的解决方案,在列名和
extract
上使用 groupby
, sum
。最后, 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/