我确实知道有些帖子与我的问题非常相似,但没有一个成功地给了我正确的答案。我希望对熊猫数据框的每一行执行取自几列的值的总和。随着列数趋于变化,我希望从列列表中求和。
此刻我的代码如下:
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']]
但这似乎不起作用...有什么想法吗?谢谢!
答案 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)