如何将列值拆分为多个具有不同长度的值的列?

mat*_*adt 0 python split multiple-columns pandas

如何将 COD 列中的值拆分为长度不同的 3 列?特别是如下所示,我需要第一列上有一个数字,第二列上有 2 个数字,第三列上有 3 个数字。任何想法?

COD    CODA  CODB  CODC
140022 1     40    022
140031 1     40    031
140032 1     40    032
140033 1     40    033
140034 1     40    034
140035 1     40    035
140036 1     40    036
Run Code Online (Sandbox Code Playgroud)

谢谢!

moz*_*way 5

由于您想保留前导零,因此必须将所有内容都作为字符串处理。

您可以使用str.extract

df[['CODA', 'CODB', 'CODC']] = df['COD'].astype(str).str.extract('(.)(..)(...)')
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因您不确定输入的数字是否为 6 位(优先从右侧填充):

df[['CODA', 'CODB', 'CODC']] = (df['COD'].astype(str).str.zfill(6)
                                .str.extract('(.)(..)(...)$')
                                )
Run Code Online (Sandbox Code Playgroud)

从左侧填充:

df[['CODA', 'CODB', 'CODC']] = (df['COD'].astype(str).str.ljust(6, '0')
                                .str.extract('^(.)(..)(...)')
                                )
Run Code Online (Sandbox Code Playgroud)

输出:

      COD CODA CODB CODC
0  140022    1   40  022
1  140031    1   40  031
2  140032    1   40  032
3  140033    1   40  033
4  140034    1   40  034
5  140035    1   40  035
6  140036    1   40  036
Run Code Online (Sandbox Code Playgroud)