Python 基于列id对循环中的dataframe列求和

Python 基于列id对循环中的dataframe列求和,python,pandas,Python,Pandas,我的输入数据框看起来像这样 EXP 1 EXP 2 EXP 3 EXP 4 1 2 4 3 5 6 4 3 5 2 1 2 3 3 2 3 我想创建三个新列。 第一个新列是EXP 1和EXP 2之和 第二个新列是EXP 1、EXP 2

我的输入数据框看起来像这样

EXP 1      EXP 2      EXP 3       EXP 4
 1          2           4          3
 5          6           4          3
 5          2           1          2
 3          3           2          3
我想创建三个新列。 第一个新列是EXP 1和EXP 2之和 第二个新列是EXP 1、EXP 2和EXP 3的总和 第三个新列是EXP 1和EXP 2以及EXP 3和EXP 4的总和

我已经试着做了一个循环,但我真的不知道该怎么做

显然,我可以直接使用df['newcolumn1']=df['exp1']+df['exp2']等等,但这对于我的真正目标来说太慢了

感谢您的帮助。

尝试axis=1:

sums = df.expanding(axis=1, min_periods=2).sum().iloc[:, 1:]
sums.columns = map(lambda x: f'{df.columns[0]}-{x}', sums.columns)
new_df = pd.concat((df, sums), axis=1)
然后合并回原始数据帧:

轴上的通孔=1:

sums = df.expanding(axis=1, min_periods=2).sum().iloc[:, 1:]
sums.columns = map(lambda x: f'{df.columns[0]}-{x}', sums.columns)
new_df = pd.concat((df, sums), axis=1)
或通过:

new_df

EXP 1 EXP 2 EXP 3 EXP 4 EXP 1-EXP 2 EXP 1-EXP 3 EXP 1-EXP 4
0      1      2      4      3          3.0          7.0         10.0
1      5      6      4      3         11.0         15.0         18.0
2      5      2      1      2          7.0          8.0         10.0
3      3      3      2      3          6.0          8.0         11.0

完整的工作示例:

import pandas as pd

df = pd.DataFrame({
    'EXP 1': [1, 5, 5, 3],
    'EXP 2': [2, 6, 2, 3],
    'EXP 3': [4, 4, 1, 2],
    'EXP 4': [3, 3, 2, 3]
})

sums = df.expanding(axis=1, min_periods=2).sum().iloc[:, 1:]
sums.columns = map(lambda x: f'{df.columns[0]}-{x}', sums.columns)
new_df = df.join(sums)

print(new_df)