在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') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |