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

vir*_*lus 6 python python-3.x pandas jupyter-notebook jupyter-lab

我确实知道有些帖子与我的问题非常相似,但没有一个帖子成功地给了我正确的答案。我希望,对于 pandas 数据帧的每一行,执行从几列中获取的值的总和。由于列数往往会变化,我希望从列列表中执行此求和。

目前我的代码如下所示:

df['Sum'] = df['Col A'] + df['Col E'] + df['Col Z']
Run Code Online (Sandbox Code Playgroud)

我希望它是这样的:

df['Sum'] = sum(list_of_my_columns)
Run Code Online (Sandbox Code Playgroud)

或者

df[list_of_my_columns].sum(axis=1)
Run Code Online (Sandbox Code Playgroud)

但两者都返回错误。可能是因为我的列表没有正确创建?我就是这样做的:

list_of_my_columns = [df['Col A'], df['Col E'], df['Col Z']]
Run Code Online (Sandbox Code Playgroud)

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

DYZ*_*DYZ 6

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

list_of_my_columns = ['Col A', 'Col E', 'Col Z']
df['Sum'] = df[list_of_my_columns].sum(axis=1)
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,这会产生SettingWithCopyWarning Pandas 警告:“正在尝试在 DataFrame 切片的副本上设置值。尝试使用 .loc[row_indexer,col_indexer] = value 代替。`请参阅文档中的警告:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html (3认同)