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

如何将DataFrame中的嵌套整数列表字符串转为扁平化列表?

处理DataFrame中嵌套列表字符串的扁平化转换

核心思路

先将字符串形式的嵌套列表解析为Python原生嵌套列表对象,再逐层展开并过滤空列表,最终得到仅包含有效数值的扁平化列表。

实现步骤及代码

  1. 导入依赖模块
    用ast.literal_eval安全解析字符串格式的列表(比直接用eval更安全,避免执行恶意代码),结合pandas处理DataFrame:
import pandas as pd
import ast
  1. 定义转换函数
def flatten_nested_str(s):
    # 把字符串转成嵌套列表
    nested_list = ast.literal_eval(s)
    # 过滤空列表并扁平化:遍历每个子列表,收集非空列表的所有元素
    flattened = [num for sublist in nested_list if sublist for num in sublist]
    return flattened
  1. 测试单个字符串
a = '[],[79, 82],[82],[]'
b = '[],[71, 85],[44],[], [], [], [78,99,120,33],[]'

print(flatten_nested_str(a))  # 输出: [79, 82, 82]
print(flatten_nested_str(b))  # 输出: [71, 85, 44, 78, 99, 120, 33]
  1. 批量处理DataFrame列
    假设你的DataFrame名为df,目标处理列是target_col,用apply实现批量转换:
df['flattened_col'] = df['target_col'].apply(flatten_nested_str)

补充说明

  • ast.literal_eval仅能解析Python字面量结构(如列表、字典、数字等),完全适配这类字符串格式的嵌套列表解析场景。
  • 列表推导式的逻辑是先判断子列表是否非空,再提取其中的所有元素,一步完成过滤与扁平化操作,简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:46:06