pandas如何对DataFrame单列内的拆分数字进行逐行求和
解决方案
你原有代码报错的核心原因是:两次拆分后得到的是嵌套的字符串列表,sum()既不支持字符串类型直接求和,也无法直接累加嵌套列表的元素。
下面给出两种最简实现方案:
方案1:正则提取(兼容性更高)
不需要手动处理分隔符逻辑,直接提取字符串内所有数字求和,pandas批量处理代码如下:
import pandas as pd import re # 构造示例DataFrame,你可以替换为自己的实际数据 df = pd.DataFrame({ '待处理列名': [ '1-2 3-4 8-9', '4-5 6-2', '3-1 4-2 1-4' ] }) # 核心计算逻辑,一行完成 df['求和结果'] = df['待处理列名'].apply(lambda x: sum(map(int, re.findall(r'\d+', x)))) # 输出结果验证 print(df['求和结果'])
输出结果:
0 27 1 17 2 15 Name: 求和结果, dtype: int64
方案2:字符替换拆分(无需导入正则库)
如果不想引入正则依赖,可以统一把分隔符-替换为空格后拆分所有元素求和:
df['求和结果'] = df['待处理列名'].apply(lambda x: sum(int(num) for num in x.replace('-', ' ').split()))
运行结果和方案1完全一致。
内容的提问来源于stack exchange,提问作者Sekhar
相关产品推荐
相关产品推荐

