df1
Model Version
ANALYST7000 8.2.1.0
ANALYSTMM 4.5.6.4
PA-500 4.56.67
PA-4000 8.7.89
PA-5000 9.0.5.6
PA-7000 4.5.6.7df2
Model
ANALYST7245
ANALYST7200XM
ANALYSTMM
PA-570
PA-5460
PA-5790
PA-7000输出
ANALYST7245 8.2.1.0
ANALYST7200XM 8.2.1.0
ANALYSTMM 4.5.6.4
PA-570 4.56.67
PA-5460 9.0.5.6
PA-5790 9.0.5.6
PA-7000 4.5.6.7我有两个数据帧df1和df2我想要上面的输出,df中的模型匹配df2中的模型,如分析师那些落入七千以下的和PA落入五百,四千和很快类别的
发布于 2020-05-18 14:43:39
如果需要,将第一个数字后面的所有数字替换为0,然后通过第一个DataFrame映射列Model,使用:
df2['Version'] = [f'{a}{b}{"0" * len(c)}' for a,b, c in df2['Model'].str.split('(\d)', n=1)]
print (df2)
Model Version
0 ANALYST72450 ANALYST70000 <- added 4 times 0 by length
1 ANALYST720XM ANALYST70000
2 PA-570 PA-500
3 PA-5460 PA-5000
4 PA-5790 PA-5000
5 PA-7000 PA-7000
df2['Version'] = df2['Version'].map(df1.set_index('Model')['Version'])
print (df2)
Model Version
0 ANALYST72450 NaN <- not matched ANALYST7000 to ANALYST70000, so NaN
1 ANALYST720XM NaN
2 PA-570 4.56.67
3 PA-5460 9.0.5.6
4 PA-5790 9.0.5.6
5 PA-7000 4.5.6.7https://stackoverflow.com/questions/61863471
复制相似问题