如何按大空格拆分Pandas单列DataFrame为三列?partition方法遇问题
解决DataFrame单列拆分问题
嘿,我知道你为啥用str.partition(' on ')得不到想要的结果了——这个方法会把内容拆成「分隔符前的内容」「分隔符本身」「分隔符后的内容」三部分,所以才会出现多余的列和NaN。而你需要的是把on 和后面的内容合并成一列,对吧?
给你两种简单的解决方法:
方法一:用str.split()精准拆分
这个方法更直接,指定只拆分一次,然后展开成列就行:
# 假设你的原始单列DataFrame列名为'raw_content' split_result = df['raw_content'].str.split(' on ', n=1, expand=True) # 给列命名 split_result.columns = ['column_0', 'column_1'] # 如果确实需要第三列(即使为空),可以添加 split_result['column_2'] = ''
运行后得到的结果就完全符合你的预期:
| column_0 | column_1 | column_2 |
|---|---|---|
| boots 0330 | on 31 mar clp n... | |
| tesco stores 6292 | on 31 mar clp n... | |
| uniqlo | on 31 mar clp n... |
方法二:处理partition的结果
如果你坚持想用partition,可以把拆分后的分隔符和后面的内容合并:
partitioned = df['raw_content'].str.partition(' on ') # 合并第二列(分隔符)和第三列(后面的内容),再和第一列拼接 result = partitioned[[0]].assign(column_1=partitioned[1] + partitioned[2]) result['column_2'] = ''
两种方法都能搞定,个人更推荐第一种,代码更简洁易懂~
内容的提问来源于stack exchange,提问作者Arnold Klein
相关产品推荐
相关产品推荐

