创建一个列列表并将它们汇总到一个新列中 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)
我知道有些帖子与我的问题非常相似,但其中 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)