Skip to main content
 首页 » 编程设计

python之将 DataFrame 字符串列拆分为 N 个拆分

2025年05月04日36qlqwjy

我有一个df

a    name 
1    a/b/c 
2    w/x/y/z 
3    q/w/e/r/t 

我想在 '/' 上拆分名称列以获得此输出

id    name    main    sub    leaf 
1     a/b/c    a       b       c 
2    w/x/y/z   w       x       z 
3   q/w/e/r/t  q       w       t  

即前两个斜杠分别添加为ma​​in 和sub, 和叶子应该在最后一个斜杠后填满单词

我试过用这个,但结果不正确

df['name'].str.split('/', expand=True).rename(columns={0:'main',1:'sub',2:'leaf'}) 

有没有办法分配列

请您参考如下方法:

使用split与 assign :

s = df['name'].str.split('/') 
df = df.assign(main=s.str[0], sub=s.str[1], leaf=s.str[-1]) 
print (df) 
   a       name leaf main sub 
0  1      a/b/c    c    a   b 
1  2    w/x/y/z    z    w   x 
2  3  q/w/e/r/t    t    q   w 

改变列的顺序:

s = df['name'].str.split('/') 
df = df.assign(main=s.str[0], sub=s.str[1], leaf=s.str[-1]) 
df = df[df.columns[:-3].tolist() + ['main','sub','leaf']] 
print (df) 
   a       name main sub leaf 
0  1      a/b/c    a   b    c 
1  2    w/x/y/z    w   x    z 
2  3  q/w/e/r/t    q   w    t 

或者:

s = df['name'].str.split('/') 
df = (df.join(pd.DataFrame({'main':s.str[0], 'sub':s.str[1], 'leaf':s.str[-1]},  
              columns=['main','sub','leaf']))) 
print (df) 
   a       name main sub leaf 
0  1      a/b/c    a   b    c 
1  2    w/x/y/z    w   x    z 
2  3  q/w/e/r/t    q   w    t