加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在python中优雅地总结命名的DataFrame列

发布时间:2020-12-20 12:09:27 所属栏目:Python 来源:网络整理
导读:我正在尝试编写一个函数,它将在pandas DataFrame中对一组指定的列求和. 首先,一些背景.每个数据都有一个带有名称的列(例如“var”)和按顺序排列的该名称旁边的数字(例如,“var1,var2”).我知道我可以将5列与以下代码相加: import pandas as pddata = pd.rea
我正在尝试编写一个函数,它将在pandas DataFrame中对一组指定的列求和.

首先,一些背景.每个数据都有一个带有名称的列(例如“var”)和按顺序排列的该名称旁边的数字(例如,“var1,var2”).我知道我可以将5列与以下代码相加:

import pandas as pd
data = pd.read_csv('data_file.csv')
data['var_total'] = data.var1 + data.var2 + data.var3 + data.var4 + data.var5

但是,当你将var1-var30加总时,这可能是重复的.我认为必须有一些优雅的解决方案来更快地总结它们,因为列名是可预测和统一的.有没有我可以编写的功能或内置的pandas功能可以让我更快地总结这些功能?

解决方法

即使您正在写出所有列名,还有几种方法可以更优雅地完成总和:

import pandas as pd
import numpy as np

df = pd.DataFrame({'var1': np.random.randint(1,10,10),'var2': np.random.randint(1,'var3': np.random.randint(1,10)})

# Use the sum method:
df[['var1','var2','var3']].sum(axis='columns')

# Use eval
df.eval('var1 + var2 + var3')

然后,您始终可以使用标准Python工具来操作字符串,以将列名列表组合在一起:

cols = ['var' + str(n) for n in range(1,3 + 1)]
cols
Out[9]: ['var1','var3']

df[cols].sum(axis='columns')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读