Skip to main content
 首页 » 编程设计

python之仅将 1 列拆分为 2,但保留其他 pandas python

2025年05月04日27mfryf

我有一个示例数据:

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) 

看起来像这样:

    N-D       unit        value 
Numerator     001 peds      0 
Denominator   002 peds1     1 
Numerator     003 4U        0 
Denominator   004 4U1       1 
Numerator     005 MS        0 

我想用空格将“单位”列拆分为 2:“” 我的代码:

df1 = df['unit'].str.split(" ", expand=True) 

输出是:

  0      1 
 001   peds 
 002  peds1 
 003     4U 
 004    4U1 
 005     MS 

但我的其他 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 

请您参考如下方法:

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 

如果你想去掉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 

您可以根据需要重命名列 '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