首页 > 解决方案 > 每两列的总和,并在熊猫数据框中留下一列

问题描述

我的任务是这样的:

df=pd.DataFrame([(1,2,3,4,5,6),(1,2,3,4,5,6),(1,2,3,4,5,6)],columns=['a','b','c','d','e','f'])
Out:
    a b c d e f
0   1 2 3 4 5 6
1   1 2 3 4 5 6 
2   1 2 3 4 5 6

我想做的是输出数据框如下所示:

Out
        s1 b s2  d  s3  f
    0   3  2  7  4  11  6
    1   3  2  7  4  11  6
    2   3  2  7  4  11  6

也就是说,分别对列(a,b),(c,d),(e,f)求和,并保留最后一列并将结果列名称重命名为(s1,s2,s3)。有人可以帮助解决 Pandas 中的这个问题吗?太感谢了。

标签: pythonpandasdataframe

解决方案


一做

df['a'] = df['a'] + df['b']
df.rename(columns={col1: 's1')}, inplace=True)

您可以使用循环来完成所有操作

  • enumerate使用and的循环zip,生成

    (0,('a','b')), (1,('c','d')), (2,('e','f'))
    
  • 使用这些索引进行求和和重命名

import pandas as pd
cols = ['a','b','c','d','e','f']
df =pd.DataFrame([(1,2,3,4,5,6),(1,2,3,4,5,6),(1,2,3,4,5,6)],columns=cols)
    
for idx, (col1, col2) in enumerate(zip(cols[::2], cols[1::2])):
    df[col1] = df[col1] + df[col2]
    df.rename(columns={col1: 's'+str(idx+1)}, inplace=True)

print(df)

CODE DEMO


推荐阅读