我有一个示例数据:
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
我想用空格将'unit'列拆分为2:“” 我的代码:
df1 = df['unit'].str.split(" ", expand=True)
输出是:
0 1
001 peds
002 peds1
003 4U
004 4U1
005 MS
但我的其他两列已经不见了,我不太清楚在数据框级别上执行此操作的正确语法,因此它将保留其余列。
我想要的输出:
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
答案 0 :(得分: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
如果您想摆脱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
答案 1 :(得分:0)
您可以简单地尝试:
<块引用>df[['unit','name']] = df.unit.str.split(" ",expand=True,)
<块引用>df
这将为您提供所需的输出。
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