Populate column in data frame based on a range found in another dataframe

前端 未结 3 1473
生来不讨喜
生来不讨喜 2021-01-25 18:07

I\'m attempting to populate a column in a data frame based on whether the index value of that record falls within a range defined by two columns in another data frame.

d

3条回答
  •  [愿得一人]
    2021-01-25 18:36

    Alternative solution:


    classdict = df2.set_index("CLASS").to_dict("index")
    
    rangedict = {}
    
    for key,value in classdict.items():
    
        # get all items in range and assign value (the key)
        for item in list(range(value["START"],value["STOP"]+1)):
            rangedict[item] = key
    

    extract rangedict:

    {2: 1, 3: 1, 5: 2, 6: 2, 7: 2, 8: 3}
    

    now map and possibly format(?):

    df1['CLASS'] = df1.index.to_series().map(rangedict)
    df1.applymap("{0:.0f}".format)
    

    outputs:

    a   CLASS
    0   4   nan
    1   45  nan
    2   7   1
    3   5   1
    4   48  nan
    5   44  2
    6   22  2
    7   89  2
    8   45  3
    9   44  nan
    10  23  nan
    

提交回复
热议问题