创建一个列列表并将它们汇总到一个新列中 Pandas (Python)

Create a list of columns and sum them in a new column with Pandas (Python)

我知道有些帖子与我的问题非常相似,但其中 none 成功地为我提供了正确答案。我想,对于 pandas 数据框的每一行,执行从几列中获取的值的总和。由于列数往往会有所不同,我希望从列列表中执行此求和。

目前我的代码如下所示:

df['Sum'] = df['Col A'] + df['Col E'] + df['Col Z']

我希望它是这样的:

df['Sum'] = sum(list_of_my_columns)

df[list_of_my_columns].sum(axis=1)

但是他们两个return都出错了。可能是因为我的列表没有正确创建?我是这样做的:

list_of_my_columns = [df['Col A'], df['Col E'], df['Col Z']]

但这似乎行不通...有什么想法吗?谢谢!

您所要做的就是创建一个 Series(这是 pandas 中的一列)并将每一行的总和附加到 Series。然后只需将系列添加到数据框。

import pandas as pd

df = pd.read_csv('input.csv', header=None)
col = pd.Series()

for i, row in df.iterrows():
    col.set_value(i, (row[0] + row[1] + row[2]))

df = df.assign(sum=col)

print(df)

让我写一个答案

list_of_my_columns = [df['Col A'], df['Col E'], df['Col Z']]

使用concat

df['Sum']=pd.concat(list_of_my_columns,axis=1 ).sum(axis=1)

您不需要列的列表。您需要列名列表:

list_of_my_columns = ['Col A', 'Col E', 'Col Z']
df['Sum'] = df[list_of_my_columns].sum(axis=1)