只拆分1列到2但保留其他pandas python

Jes*_*ica 1 python split pandas

我有一个示例数据:

import pandas as pd
d = {
 'unit': ['001 peds', '002 peds1', '003 4U', '004 4U1', '005 MS'],
 'N-D': ['Numerator', 'Denominator', 'Numerator', 'Denominator', 'Numerator'],
 'value': [0, 1, 0, 1, 0],

}
df = pd.DataFrame(d)
Run Code Online (Sandbox Code Playgroud)

它看起来像这样:

    N-D       unit        value
Numerator     001 peds      0
Denominator   002 peds1     1
Numerator     003 4U        0
Denominator   004 4U1       1
Numerator     005 MS        0
Run Code Online (Sandbox Code Playgroud)

我想用空格将'unit'列拆分为2:""我的代码:

df1 = df['unit'].str.split(" ", expand=True)
Run Code Online (Sandbox Code Playgroud)

输出是:

  0      1
 001   peds
 002  peds1
 003     4U
 004    4U1
 005     MS
Run Code Online (Sandbox Code Playgroud)

但我的其他2列已经不见了,我不太清楚在数据帧级别上执行此操作的正确语法,因此它将保留其余列.

我想要的输出:

    N-D       0     1    value
Numerator     001  peds      0
Denominator   002  peds1     1
Numerator     003  4U        0
Denominator   004  4U1       1
Numerator     005  MS        0
Run Code Online (Sandbox Code Playgroud)

piR*_*red 5

i = df.columns.get_loc('unit')
df2 = df['unit'].str.split(" ", expand=True)
pd.concat([df.iloc[:, :i], df2, df.iloc[:, i+1:]], axis=1)

           N-D    0      1  value
0    Numerator  001   peds      0
1  Denominator  002  peds1      1
2    Numerator  003     4U      0
3  Denominator  004    4U1      1
4    Numerator  005     MS      0
Run Code Online (Sandbox Code Playgroud)

如果你想摆脱这个0专栏

df.assign(unit=df.unit.str.split(n=1).str[1])

           N-D   unit  value
0    Numerator   peds      0
1  Denominator  peds1      1
2    Numerator     4U      0
3  Denominator    4U1      1
4    Numerator     MS      0
Run Code Online (Sandbox Code Playgroud)

您可以重命名列'unit'任何你喜欢

df.assign(unit=df.unit.str.split(n=1).str[1]).rename(columns=dict(unit='w/e'))

           N-D    w/e  value
0    Numerator   peds      0
1  Denominator  peds1      1
2    Numerator     4U      0
3  Denominator    4U1      1
4    Numerator     MS      0
Run Code Online (Sandbox Code Playgroud)