如何将CSV行内的Techniques数组全部拆分为单独数据行?
拆分CSV中列表列为多行数据的解决方案
情况1:列存储的是实际Python列表
如果properties.techniques列的值本身是Python列表对象(如你示例中输出的['T1078','T1036']),直接使用pandas的explode()方法即可一键拆分:
# 过滤空值后拆分列表为单独行 techniques = result['properties.techniques'].dropna().explode() print(techniques)
输出结果:
T1078 T1036 T1036
情况2:列存储的是字符串格式的列表
如果你的列内容是类似"['T1078','T1036']"的字符串(而非实际列表),需要先将字符串转换为列表对象,再拆分:
import ast # 把字符串格式的列表转为实际列表 result['properties.techniques'] = result['properties.techniques'].dropna().apply(ast.literal_eval) # 拆分列表为单独行 techniques = result['properties.techniques'].explode() print(techniques)
为什么之前的方法只提取单个条目?
你用的str.extract()只会匹配每行中第一个符合正则表达式的内容,因此无法提取列表中的所有元素。而explode()是pandas专门为拆分可迭代对象列设计的方法,能完整拆分每行的所有元素为独立行。
内容的提问来源于stack exchange,提问作者S3c-R3search
相关产品推荐
相关产品推荐

