是否将一个df中的列值与另一个具有特定格式的df的列值匹配?

2024-04-29 10:18:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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.7

df2

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中的模型相匹配,比如分析员低于7000人,PA低于500人,4000人及以下


Tags: 数据模型dfmodelversiondf1df2pa
1条回答
网友
1楼 · 发布于 2024-04-29 10:18:39

如果需要将第一个数字后面的所有数字替换为0,然后将列Model映射为第一个DataFrame,请使用:

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.7

相关问题 更多 >