如何将DataFrame单列拆分为4列?现有拆分方法存问题求修正
解决DataFrame单列拆分多列的问题
你的问题出在拆分时使用单个空格作为分隔符,当Part_no缺失时,后续内容会错误填充到Part_no列。正确的做法是用正则表达式匹配任意数量的空白字符拆分,确保前三个字段对应Item、Qty、Part_no,剩余内容合并到Description。
修正代码
data_df[['Item', 'Qty', 'Part_no', 'Description']] = data_df["Dump"].str.split(r'\s+', n=3, expand=True)
原理说明
r'\s+':匹配一个或多个连续空白字符(包括空格、制表符等),解决了原始数据中分隔符数量不统一的问题。n=3:最多拆分3次,将字符串拆分为4个部分——前三个对应Item、Qty、Part_no,最后一个保留所有剩余内容(包括Description中的空格)。
验证效果
针对DATA1
拆分后结果与期望输出1完全一致:
Item Qty Part_no Description 12525 2 153898 Winch 24798 1 147654 Gear 65116 4 Screw 46456 1 Rowing 46563 5 Nut
针对DATA2
拆分后结果与期望输出2完全一致:
Item Qty Part_no Description 12525 2 153898 Winch Gear 24798 1 147654 Gear nuts 65116 X Screw bolts 46456 1 Rowing rings 46563 X Nut
原代码失效原因
原代码str.split(" ", 3, expand=True)存在两个问题:
- 单个空格作为分隔符时,多连续空格会生成空字符串元素,
maxsplit=3的规则会让缺失Part_no的行中,Description被错误分配到Part_no列。 - 无法保留Description中的空格(比如DATA2里的"Winch Gear"会被拆分为两部分)。
内容的提问来源于stack exchange,提问作者Pravin
相关产品推荐
相关产品推荐

