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

如何从含空列表和单值列表的Pandas DataFrame中提取值转整数

解决方案

方法1:通用兼容处理(适配混合字符串/列表类型)

适合SysNum列同时存在JSON格式字符串和原生Python列表的场景:

import pandas as pd
import json

# 示例数据初始化
data = {'Name': ['BN #1', 'HHC', 'A comp', 'B comp', 'BN #2', 'HHC', 'A comp', 'B comp'],
        'SysNum': ['["1"]', [], [], [], '["2"]', [], [], []]
            }
df = pd.DataFrame(data)

def parse_sysnum(val):
    # 字符串格式先转Python列表
    if isinstance(val, str):
        val = json.loads(val)
    # 非空列表取首元素转整数,空列表返回缺失值
    return int(val[0]) if val else pd.NA

df['SysNum_Int'] = df['SysNum'].apply(parse_sysnum)

生成的SysNum_Int列为Pandas可空整数类型Int64,直接调用df['SysNum_Int'].max()即可获取最大值。

方法2:向量化高性能处理(适合超大型DataFrame)

利用正则提取避免逐行apply,性能提升显著,无需考虑原数据是字符串还是列表类型:

# 统一转为字符串后提取双引号包裹的数字,转可空整数类型
df['SysNum_Int'] = df['SysNum'].astype(str).str.extract(r'"(\d+)"').astype('Int64')

效果验证

两种方法处理后得到的SysNum_Int列输出一致:

0       1
1    <NA>
2    <NA>
3    <NA>
4       2
5    <NA>
6    <NA>
7    <NA>
Name: SysNum_Int, dtype: Int64

最大值查询df['SysNum_Int'].max()返回结果为2,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:54:06