【问题标题】:Returning value in new column based on other columns pandas基于其他列 pandas 在新列中返回值
【发布时间】:2022-11-18 03:46:44
【问题描述】:

我正在尝试将 vlookup 函数镜像到 python 脚本中:

如果 analysis_sheet 中 GPN 列的值在 whitelist_sheet 的 GPN 列中,我想将 whitelist_sheet DataFrame 中 SOURCE 列的值返回到 analysis_sheet 中的 RCL 列。这是我的一些试验,但没有奏效:

analysis_sheet['RCL'] = analysis_sheet['GPN'].isin(whitelist_sheet['GPN'])

和

analysis_sheet['RCL'] = ((analysis_sheet['GPN'].loc[analysis_sheet['GPN'].isin(whitelist_sheet['GPN']), analysis_sheet['RCL']]) = whitelist_sheet['SOURCE'])

和

analysis_sheet['RCL'] = analysis_sheet.merge(whitelist_sheet, right_on='SOURCE')

和

analysis_sheet['RCL'] = analysis_sheet.loc[analysis_sheet['GPN'].isin(whitelist_sheet['GPN']), whitelist_sheet['SOURCE']]

这是它应该如何工作的示例: RESULT TABLE

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:
    import pandas as pd
    data1 = {'GPN': [111, 222, 333, 444], 'col2': ['fsgd', 'sdg', 'sfgf', 'sfgf'], 'col3':['bgg', 'gd', 'gbg', 'gbg']}
    analysis_sheet = pd.DataFrame(data1)  
    data2 = {'GPN': [111, 222, 333, 555], 'col2': ['as', 'df', 'dd', 'sd'], 'Source':['HH', 'BB', 'CD', 'GK']}
    whitelist_sheet = pd.DataFrame(data2).rename(columns={'col2': 'to_be_droped'}) 
    analysis_sheet.merge(whitelist_sheet, on=['GPN'], how='left').rename(columns={'Source': 'RCL'}).drop('to_be_droped', axis=1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-10
      • 2021-12-30
      • 2016-02-10
      • 2018-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      相关资源
      最近更新 更多