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)
谢谢!
由于您想保留前导零,因此必须将所有内容都作为字符串处理。
您可以使用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)