擅长:python、mysql、java
<p>我采用了另一种方法:循环代码的长度,假设您不会有太多的级别。你知道吗</p>
<pre><code>import pandas as pd
df=pd.DataFrame({
'Code':['A','AM','AMB'],
'Name':['USA','Massachusetts',"Boston"]
})
# prepare
res=pd.DataFrame({
'Code':[]
})
df['len']=df['Code'].str.len()
cols=[]
for x in range(df['len'].max()):
dfX=df[df['len']==x+1].copy()
dfX['prefix']=dfX['Code'].str.slice(stop=x)
dfX=dfX.merge(res,how='left',left_on='prefix',right_on='Code')
dfX[f'Level{x+1}']=dfX['Code_x']
dfX[f'Level{x+1}Name']=dfX['Name']
dfX[f'Code']=dfX['Code_x']
cols+=[f'Level{x+1}',f'Level{x+1}Name']
res=res.append(dfX[['Code']+cols],sort=False)
res
Code Level1 Level1Name Level2 Level2Name Level3 Level3Name
0 A A USA NaN NaN NaN NaN
0 AM A USA AM Massachusetts NaN NaN
0 AMB A USA AM Massachusetts AMB Boston
</code></pre>
<p>我们的想法是首先在查找表中添加级别1,然后添加级别2和级别3。。。
代码看起来很难看,但希望很容易理解。你知道吗</p>