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

如何在Pandas DataFrame中将逗号分隔值转换为整数列表

Pandas DataFrame:将逗号分隔数值转为整数列表的实现方案

刚好前段时间我也处理过类似的需求,给你整理了几个实用的实现方案,包括基础转换和异常处理的场景,附上输入输出示例,你可以直接参考:

输入与预期输出示例

输入DataFrame

假设我们有如下包含逗号分隔数值字符串的DataFrame:

import pandas as pd

df = pd.DataFrame({
    'id': [1, 2, 3],
    'num_str': ['10,20,30', '40,50', '60']
})

预期输出

我们需要将num_str列转换为整数类型的列表,最终结果如下:

id    num_str        num_list
0   1  10,20,30  [10, 20, 30]
1   2     40,50     [40, 50]
2   3        60        [60]

基础转换方案(适用于干净数据)

方案1:使用apply + 列表推导式

这是最直观的写法,适合数据格式规范、无脏数据的场景:

# 新增一列存储转换后的整数列表
df['num_list'] = df['num_str'].apply(lambda x: [int(num) for num in x.split(',')])

逻辑说明:

  • 用x.split(',')将每个逗号分隔的字符串拆分为字符串列表(比如"10,20,30"→["10","20","30"])
  • 通过列表推导式遍历每个字符串元素,转换为整数类型

方案2:使用str.split + map

更简洁的链式写法,效果和方案1一致:

df['num_list'] = df['num_str'].str.split(',').map(lambda x: [int(i) for i in x])

逻辑说明:

  • 先通过str.split(',')将整个列批量转换为字符串列表的Series
  • 再用map对每个列表中的元素执行整数转换

带异常处理的稳健方案(适用于存在脏数据的场景)

如果你的数据中可能存在空值、空字符串或者非数值字符(比如"10,a,30"),可以用带异常捕获的自定义函数来处理:

def str_to_int_list(s):
    # 处理空值或空字符串
    if pd.isna(s) or s.strip() == '':
        return []
    try:
        # 分割后转整数,同时处理元素前后可能存在的空格(比如"10, 20")
        return [int(num.strip()) for num in s.split(',')]
    except ValueError:
        # 遇到非数值内容时的处理逻辑,可根据需求调整(比如返回空列表/原字符串)
        return []

df['num_list'] = df['num_str'].apply(str_to_int_list)

逻辑说明:

  • 先判断输入是否为空值或空字符串,直接返回空列表
  • 尝试执行分割和转换操作,若遇到无法转整数的内容(比如字母),捕获ValueError并返回空列表(你可以根据业务需求改成标记错误、保留原数据等)

验证结果

执行完上述代码后,打印DataFrame即可看到转换后的结果:

print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 19:37:32