我有一个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
即前两个斜杠分别添加为main 和sub, 和叶子应该在最后一个斜杠后填满单词
我试过用这个,但结果不正确
df['name'].str.split('/', expand=True).rename(columns={0:'main',1:'sub',2:'leaf'})
有没有办法分配列
最佳答案
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/