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

如何用Pandas对DataFrame中分号分隔的数值求和?

解决方案:对Pandas DataFrame中分号分隔的数值求和

这问题我之前处理类似数据时碰到过,用Pandas的applymap方法配合自定义函数就能高效解决,下面是完整的实现步骤:

1. 创建示例DataFrame

首先我们先还原你提供的原始数据:

import pandas as pd

data = {
    'col1': ['2.1', '8', '1;1'],
    'col2': ['8', '3.1;2', '8;1']
}
df = pd.DataFrame(data, index=['2018-03-05', '2018-03-06', '2018-03-07'])

2. 定义分号数值求和函数

我们需要一个函数来处理单个单元格:如果单元格是分号分隔的字符串,就分割后转成数值求和;如果是单个数值(不管是字符串还是数字类型),直接返回该数值。

def sum_semicolon_values(x):
    # 统一转成字符串,避免非字符串类型调用split报错
    parts = str(x).split(';')
    # 遍历分割后的部分,转成float并求和,同时过滤空值(比如分号前后的空格或空内容)
    return sum(float(part.strip()) for part in parts if part.strip())

3. 应用函数到整个DataFrame

用applymap方法将函数应用到DataFrame的每一个单元格:

processed_df = df.applymap(sum_semicolon_values)

4. 查看处理结果

打印processed_df就能得到你期望的输出:

col1  col2
2018-03-05   2.1   8.0
2018-03-06   8.0   5.1
2018-03-07   2.0   9.0

额外说明

  • 这个函数兼容多种数据类型:不管单元格原本是字符串、整数还是浮点数,都能正确处理
  • 如果遇到类似'1;;2'这种包含空内容的分号分隔字符串,函数会自动过滤空值,只对有效数值求和

内容的提问来源于stack exchange,提问作者Vadim K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:26:54