【问题标题】:Match the column value in a df with the column value of another df with the specific format?将 df 中的列值与具有特定格式的另一个 df 的列值匹配?
【发布时间】:2020-09-03 21:21:50
【问题描述】:

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 中的模型相匹配,例如 ANALYST 那些低于 7000 的模型和 PA 那些低于 500、4000 和很快类别的模型

【问题讨论】:

    标签: python regex pandas


    【解决方案1】:

    如果需要将第一个数字之后的所有数字替换为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
    

    【讨论】:

    • 嗨,我已经编辑了 ANALYST720XM 的问题,我制作了 ANALYST7200XM,我只想匹配 ANALYST7200 而不是 XM。
    • @jezreal 你能帮我完成上面的编辑。
    猜你喜欢
    • 1970-01-01
    • 2019-01-20
    • 2022-12-03
    • 2016-09-19
    • 2020-12-29
    • 2022-01-05
    • 2021-04-27
    • 1970-01-01
    • 2019-11-02
    相关资源
    最近更新 更多