创建列列表,然后使用Pandas(Python)在新列中求和

时间:2019-03-06 23:37:28

标签: python python-3.x pandas jupyter-notebook jupyter-lab

我确实知道有些帖子与我的问题非常相似,但没有一个成功地给了我正确的答案。我希望对熊猫数据框的每一行执行取自几列的值的总和。随着列数趋于变化,我希望从列列表中求和。

此刻我的代码如下:

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)

但是他们两个都返回错误。可能是因为我的列表创建不正确吗?这是我的方法:

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

但这似乎不起作用...有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分:2)

让我写一个答案

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)

答案 1 :(得分:1)

您不需要列列表。您需要一个列名列表:

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

答案 2 :(得分:0)

您要做的就是创建一个Series(这是熊猫的一列),并取每一行的总和并将其附加到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)