我有如下数据:
Car Code DOMAINS_616
Proton CFC_HIC_U1 PRA_U1|PRD_U1|CFC_HIC_U1|CFC_HPC_U1|CFC_HIC_U1
Perudua CFC_HVC_U1 PRA_U1|PRD_U1|CFC_HVC_U1|CFC_HPC_U1|CFC_HIC_U1
Toyota CFC_HIC_U1 PRA_D1|PRD_D1|CFC_HKC_U1|CFC_HPC_U1|CFC_HOC_U1
Proton CFC_HPC_U1 PRE_U1|PRD_U1|CFC_HPC_U1|CFC_HPC_U1|CFC_HOC_U1根据代码列,我希望知道DOMAINS_616的位置号,该位置号将按如下所示的希望输出来分隔:
Car Code DOMAINS_616 Position
Proton CFC_HIC_U1 PRA_U1|PRD_U1|CFC_HIC_U1|CFC_HPC_U1|CFC_HIC_U2 3
Perudua CFC_HVC_U1 PRA_U1|PRD_U1|CFC_HVC_U1|CFC_HPC_U1|CFC_HIC_U1 3
Toyota CFC_HIC_U1 PRA_D1|PRD_D1|CFC_HKC_U1|CFC_HPC_U1|CFC_HIC_U1 5
Proton CFC_HPC_U1 PRE_U1|PRD_U1|CFC_HLC_U1|CFC_HPC_U1|CFC_HOC_U1 4有人有主意吗?
发布于 2022-02-20 04:53:49
如果Code只出现一次,而在DOMAINS_616中只出现一次,
首先,我们将DOMAINS_616分解成一个列表,并将其炸开。
step1 = df.assign(dummy=df['DOMAINS_616'].apply(lambda x: list(enumerate(x.split('|'), 1)))).explode('dummy')然后将dummy列展开为Position和domain列。
step1[['Position', 'domain']] = step1['dummy'].apply(pd.Series)最后,保留Code与domain匹配的行
step1[step1['Code']==step1['domain']].drop(columns=['dummy', 'domain'])发布于 2022-02-20 05:06:36
df['Position'] = df.apply(lambda row: row['DOMAINS_616'].split(|).index(row['Code'])+1, axis = 1)
https://stackoverflow.com/questions/71191276
复制相似问题