【问题标题】:vlookup between 2 Pandas dataframes2个熊猫数据框之间的vlookup
【发布时间】:2016-10-12 07:48:39
【问题描述】:

我有 2 个熊猫数据框,如下所示。

DF1:

Security     ISIN
ABC           I1 
DEF           I2
JHK           I3
LMN           I4
OPQ           I5

和 DF2:

ISIN      Value
 I2        100
 I3        200
 I5        300

我想最终得到如下所示的第三个数据框:

DF3:

Security   Value
 DEF       100
 JHK       200
 OPQ       300

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    可以使用merge,默认是inner join,所以省略how=inner,如果Dataframes只有一个公共列,也可以省略参数on='ISIN'

    df3 = pd.merge(df1, df2)
    #remove column ISIN
    df3.drop('ISIN', axis=1, inplace=True)
    print (df3)
      Security  Value
    0      DEF    100
    1      JHK    200
    2      OPQ    300
    

    mapISINSeries 来自df1

    print (df1.set_index('ISIN')['Security'])
    ISIN
    I1    ABC
    I2    DEF
    I3    JHK
    I4    LMN
    I5    OPQ
    Name: Security, dtype: object
    
    #create new df by copy of df2
    df3 = df2.copy()
    df3['Security'] = df3.ISIN.map(df1.set_index('ISIN')['Security'])
    #remove column ISIN
    df3.drop('ISIN', axis=1, inplace=True)
    #change order of columns
    df3 = df3[['Security','Value']]
    print (df3)
      Security  Value
    0      DEF    100
    1      JHK    200
    2      OPQ    300
    

    【讨论】:

    • 再次感谢 Jazrael。这非常有帮助。现在,如果我不是太厚脸皮,我生成的 DF 有树列,最后 2 列只有如下值:
    【解决方案2】:

    您可以使用pd.merge 自动对ISIN 进行内部连接。以下代码行应该可以帮助您:

    df3 = pd.merge(df1, df2)[['Security', 'Value']]
    

    这会导致df3

      Security  Value
    0      DEF    100
    1      JHK    200
    2      OPQ    300
    

    完全可重现的代码示例如下所示:

    import pandas as pd
    
    df1 = pd.DataFrame({
            'Security': ['ABC', 'DEF', 'JHK', 'LMN', 'OPQ'],
            'ISIN' : ['I1', 'I2', 'I3', 'I4', 'I5']
        })
    df2 = pd.DataFrame({
            'Value': [100, 200, 300],
            'ISIN' : ['I2', 'I3', 'I5']
        })
    
    df3 = pd.merge(df1, df2)[['Security', 'Value']]
    print(df3)
    

    【讨论】:

      猜你喜欢
      • 2020-06-12
      • 1970-01-01
      • 2018-04-18
      • 2014-02-16
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      • 2015-08-27
      • 2020-09-01
      相关资源
      最近更新 更多