You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过循环对DataFrame指定列中的列表型数值元素求和并生成total新列

解决方案:循环处理DataFrame列表列求和

这里有个完全贴合你需求的实现方案,用循环遍历的方式处理你的DataFrame,计算列表元素的和并生成新列:

import pandas as pd
import numpy as np

# 先创建和你提供的结构一致的示例DataFrame
df = pd.DataFrame(
    {'col1': [[0, 0], [7.9, 11.06], [0.9, 4], np.nan]},
    index=[0, 2, 3, 4]
)

# 初始化Total列,默认值设为NaN
df['Total'] = np.nan

# 循环遍历每一行处理求和逻辑
for idx, row in df.iterrows():
    # 先判断col1是否是有效的列表(排除NaN的情况)
    if not pd.isna(row['col1']) and isinstance(row['col1'], list):
        # 计算列表元素的和,按示例要求保留1位小数
        sum_result = sum(row['col1'])
        df.loc[idx, 'Total'] = round(sum_result, 1)

# 输出最终结果
print(df)

代码逻辑说明:

  1. 首先我们构建了和你给出的结构完全匹配的DataFrame,包括自定义索引和NaN值;
  2. 提前给Total列设好默认NaN值,这样col1为NaN的行就不用额外处理,直接保持默认;
  3. 用iterrows()循环遍历每一行,这是pandas里遍历行的常用方式,能拿到每一行的索引和对应数据;
  4. 每次循环先判断col1是不是有效的列表,确认后就计算列表元素的和,四舍五入到1位小数(和你给出的示例结果一致),再把结果赋值给对应行的Total列。

运行这段代码后,你会得到如下格式的结果:

Indexcol1Total
0[0, 0]0
2[7.9, 11.06]18.9
3[0.9, 4]4.9
4NaNNaN

(如果需要把0.0转为整数0,可以加一行df['Total'] = df['Total'].apply(lambda x: int(x) if pd.notna(x) and x == int(x) else x)来处理)

内容的提问来源于stack exchange,提问作者sapna Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 21:34:10