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

标签 python string pandas dataframe split

我有一个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​​insub, 和叶子应该在最后一个斜杠后填满单词

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

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

有没有办法分配列

最佳答案

使用splitassign :

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

关于python - 将 DataFrame 字符串列拆分为 N 个拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48382219/

相关文章:

python - 将\\替换为/Python

python - 加快计算返回

java - 如何在单独的方法中编辑字符串中的特定字符?

python - 跳过未知数量的行来读取标题 python pandas

python - 比较两列中的值并提取数据框中第三列的值

python - 将 pandas/matplotlib 图像直接写入 XLSX 文件

python - Pygame错误: self. spritedict [spr] = surface_blit(spr.image, spr.rect)

python - Matplotlib - 如何使用 rc_context()?

java - 将时间值为 "0:00"的字符串转换为十进制/ double 值?

c - 结果在字符串到整数之间的转换期间减 1(并且仅具有特定的字符串长度值)