使用pandas的.str.split()函数时如何保留列名并避免多重索引
解决方案:拆分字符串列为单列并保留列名、消除多重索引
最优实现方案(pandas ≥ 1.1.0 推荐)
直接使用split生成列表后调用explode方法,一步完成单列转换,自动保留原列名,且默认无多重索引:
import pandas as pd data = {'Name':['Tom Wilson', 'nick snyder', 'krish moham', 'jack oconnell']} df = pd.DataFrame(data) # 拆分后转换为单列,ignore_index参数重置为连续单层索引 df = df.assign(Name=df['Name'].str.split(' ')).explode('Name', ignore_index=True) print(df)
输出结果:
Name 0 Tom 1 Wilson 2 nick 3 snyder 4 krish 5 moham 6 jack 7 oconnell
兼容旧版本pandas的修改方案(适配原有实现逻辑)
如果你需要沿用原来split(expand=True) + stack的写法,可通过重置索引、手动指定列名的方式满足需求:
import pandas as pd data = {'Name':['Tom Wilson', 'nick snyder', 'krish moham', 'jack oconnell']} df = pd.DataFrame(data) df = df['Name'].str.split(' ', expand=True)\ .stack(dropna=True)\ .reset_index(drop=True)\ .to_frame('Name') print(df)
两种方案均满足:
- 最终输出的DataFrame保留
Name列名,可直接供后续脚本调用 - 索引为连续单层索引,无多重索引问题
内容的提问来源于stack exchange,提问作者ah2Bwise
相关产品推荐
相关产品推荐

