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)