如何在sum列前新增DataFrame列并更新sum列计算结果?
解决方案
首先纠正代码里的误区:你写的df.loc['col3'] = [4, 5, 8]是给DataFrame新增行而非列,结合你的需求(新增列放在sum列之前,且sum列求和包含该列数值),提供两种实现方式:
方式一:先加新列再计算sum(更简洁)
这种方式下新列自然会在sum列之前,无需额外调整顺序:
import pandas as pd # 创建初始DataFrame df = pd.DataFrame({'col1': [3, 2, 5], 'col2': [9, 7, 4]}) # 先添加新列col3 df['col3'] = [4, 5, 8] # 计算sum列,此时会自动包含col1、col2、col3的数值 df['sum'] = df.sum(numeric_only=True, axis=1)
方式二:已存在sum列时调整(适配你原有的操作顺序)
如果已经先添加了sum列,后续再新增col3并调整顺序、更新sum值:
import pandas as pd # 创建初始DataFrame df = pd.DataFrame({'col1': [3, 2, 5], 'col2': [9, 7, 4]}) # 先添加sum列 df['sum'] = df.sum(numeric_only=True, axis=1) # 新增col3列 df['col3'] = [4, 5, 8] # 重新计算sum,排除原sum列避免重复求和 df['sum'] = df.drop('sum', axis=1).sum(numeric_only=True, axis=1) # 调整列顺序:将col3移到sum列之前 cols = df.columns.tolist() sum_pos = cols.index('sum') # 取出col3并插入到sum的前一位 cols.insert(sum_pos, cols.pop(cols.index('col3'))) df = df[cols]
最终得到的DataFrame列顺序为col1, col2, col3, sum,sum列的数值会包含col3的内容。
内容的提问来源于stack exchange,提问作者Raj Mehta
相关产品推荐
相关产品推荐

