split only 1 column to 2 but keeping others pandas python

pandas, python, split

Solution

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

If you want to get rid of the `0` column

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

You can rename the column `'unit'` whatever you like

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

Problem

I have a sample data: ``` 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) ``` it looks like this: ``` N-D unit value Numerator 001 peds 0 Denominator 002 peds1 1 Numerator 003 4U 0 Denominator 004 4U1 1 Numerator 005 MS 0 ``` I want to split the 'unit' column into 2 by a space : " " my code: ``` df1 = df['unit'].str.split(" ", expand=True) ``` the output is: ``` 0 1 001 peds 002 peds1 003 4U 004 4U1 005 MS ``` but my other 2 columns are gone, I don't quite know the right syntax to do this on a dataframe level, so it will keep the rest of the columns. my desired output: ``` 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 ```

Original source