仅将 1 列拆分为 2 列,但保留其他熊猫蟒蛇



我有一个示例数据:

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

您可以简单地尝试:

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

东风

这将为您提供所需的输出。

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

相关内容

最新更新