replace column values in one dataframe by values of another dataframe

前端 未结 5 1348
梦如初夏
梦如初夏 2020-11-27 16:49

I have two dataframes , the first one has 1000 rows and looks like:

Date            Group         Family       Bonus
2011-06-09      tri23_1       Laavin             


        
5条回答
  •  醉酒成梦
    2020-11-27 17:48

    This is an old question but here is another way to do it, it is not like the pandas way but is fast

    Reproducing the dataframe 1 - this is to be updated

    df_1
    
        Date    Group   Family  Bonus
    0   2011-06-09  tri23_1     Laavin  456
    1   2011-07-09  hsgç_T2     Grendy  679
    2   2011-09-10  bbbj-1Y_jn  Fantol  431
    3   2011-11-02  hsgç_T2     Gondow  569
    

    Reproducing dataframe 2 - the look up

    df_2
    
        Group   Hotel
    0   tri23_1     Jamel
    1   hsgç_T2     Frank
    2   bbbj-1Y_jn  Luxy
    3   mlkl_781    Grand Hotel
    4   vchs_94     Vancouver
    

    Get all the hotel id (key column) from the dataframe 1 as a list

    key_list = list(df_1['Group'])
    
    ['tri23_1', 'hsgç_T2', 'bbbj-1Y_jn', 'hsgç_T2']
    

    Create a dictionary from the look up dataframe which has the key col and the value col

    dict_lookup = dict(zip(df_2['Group'], df_2['Hotel']))
    
    {'bbbj-1Y_jn': 'Luxy',
     'hsgç_T2': 'Frank',
     'mlkl_781': 'Grand Hotel',
     'tri23_1': 'Jamel',
     'vchs_94': 'Vancouver'}
    

    Replace the value by creating a list by looking up the value and assign to dataframe 1 column

    df_1['Group'] = [dict_lookup[item] for item in key_list]
    

    Updated dataframe 1

        Date    Group   Family  Bonus
    0   2011-06-09  Jamel   Laavin  456
    1   2011-07-09  Frank   Grendy  679
    2   2011-09-10  Luxy    Fantol  431
    3   2011-11-02  Frank   Gondow  569
    

提交回复
热议问题