python - 每两列的总和,并在熊猫数据框中留下一列
问题描述
我的任务是这样的:
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 中的这个问题吗?太感谢了。
解决方案
一做
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
推荐阅读
- javascript - 将 react-router 链接包装在 html 按钮中作为提交选项
- python - ffmpy 使用文件列表连接多个文件
- java - Tomcat 8 JNDI 和 Oracle 使用 Oracle Wallet
- amazon-web-services - 是否有查找 DynamoDB 查询消耗的 RCU 数量?
- delphi - 如何使用 Delphi DBExpress 监听 Firebird 事件
- powershell - 在退出脚本之前等待 cmdlet 终止
- java - 如何使用 Jersey (JAX-RS) 向 NTLM 认证服务器发出简单的 POST 请求
- jdbc - 可以从 jdbc 连接运行 DB2 命令吗
- julia - 如何使用 Plots.jl 在 Julia 中缩放绘图
- javascript - 无法在“DOMWindow”上执行“postMessage”:提供的目标原点与收件人窗口的原点不匹配