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

4 python multiple-columns dataframe pandas

我正在尝试编写一个函数,该函数将对 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
Run Code Online (Sandbox Code Playgroud)

但是,当您有 var1-var30 求和时,这可能是重复的。我认为必须有一些优雅的解决方案来更快地对它们求和,因为列名是可预测且统一的。是否有我可以编写的函数或内置的 Pandas 函数可以让我更快地总结这些?

小智 5

你可以这样做:

data['var_total'] = data.filter(regex='var[0-9]+').sum(axis=1)
Run Code Online (Sandbox Code Playgroud)

这将首先过滤您的数据框以仅保留var以一个或多个数字开头并后跟一个或多个数字的列。然后它将对生成的过滤后的 DataFrame 求和。