如何将['a']['b']['c']格式转为['a','b','c']并新增列存储
处理单个元素列表组合并生成新列
情况1:原始数据是字符串格式(如['a']['b']['c'])
如果你的数据是以字符串形式存储的这种组合,用正则表达式提取元素最稳妥,能避免字符串替换可能出现的边界问题:
import pandas as pd import re # 示例数据 df = pd.DataFrame({'raw_data': ["['a']['b']['c']", "['x']['y']['z']"]}) # 定义转换函数:提取所有单引号包裹的内容 def parse_string(s): return re.findall(r"'(.*?)'", s) # 生成新列 df['formatted_list'] = df['raw_data'].apply(parse_string)
运行后formatted_list列的每行就是['a','b','c']这类标准列表。
情况2:原始数据是嵌套的单个元素列表(如[['a'], ['b'], ['c']])
如果数据本身就是列表嵌套结构,直接用列表推导式扁平化即可:
import pandas as pd # 示例数据 df = pd.DataFrame({'raw_data': [[['a'], ['b'], ['c']], [['x'], ['y']]]}) # 生成新列:取出每个子列表的第一个元素 df['formatted_list'] = df['raw_data'].apply(lambda nested: [item[0] for item in nested])
验证结果
处理后执行print(df)可查看效果,比如第一种情况的输出为:
raw_data formatted_list 0 ['a']['b']['c'] [a, b, c] 1 ['x']['y']['z'] [x, y, z]
内容的提问来源于stack exchange,提问作者dee dee
相关产品推荐
相关产品推荐

