如何将DataFrame中的嵌套整数列表字符串转为扁平化列表?
处理DataFrame中嵌套列表字符串的扁平化转换
核心思路
先将字符串形式的嵌套列表解析为Python原生嵌套列表对象,再逐层展开并过滤空列表,最终得到仅包含有效数值的扁平化列表。
实现步骤及代码
- 导入依赖模块
用ast.literal_eval安全解析字符串格式的列表(比直接用eval更安全,避免执行恶意代码),结合pandas处理DataFrame:
import pandas as pd import ast
- 定义转换函数
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
- 测试单个字符串
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]
- 批量处理DataFrame列
假设你的DataFrame名为df,目标处理列是target_col,用apply实现批量转换:
df['flattened_col'] = df['target_col'].apply(flatten_nested_str)
补充说明
ast.literal_eval仅能解析Python字面量结构(如列表、字典、数字等),完全适配这类字符串格式的嵌套列表解析场景。- 列表推导式的逻辑是先判断子列表是否非空,再提取其中的所有元素,一步完成过滤与扁平化操作,简洁高效。
内容的提问来源于stack exchange,提问作者SimAzz
相关产品推荐
相关产品推荐

