如何用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
相关产品推荐
相关产品推荐

