Python - 与VLOOKUP(Excel)类似的功能

时间:2017-01-06 18:11:27

标签: python pandas dataframe vlookup

我正在尝试加入两个数据框,但无法理解Python提供的可能性。

第一个数据帧:

ID MODEL   REQUESTS ORDERS
1  Golf    123      4
2  Passat  34       5
3  Model 3 500      8
4  M3      5        0

第二个数据帧:

MODEL   TYPE  MAKE
Golf    Sedan Volkswagen
M3      Coupe BMW
Model 3 Sedan Tesla

我想要的是在第一个数据框中添加另一个名为" make"所以它看起来像这样:

ID MODEL   MAKE       REQUESTS ORDERS
1  Golf    Volkswagen 123      4
2  Passat  Volkswagen 34       5
3  Model 3 Tesla      500      8
4  M3      BMW        5        0

我已经查看了合并,连接和映射,但所有示例都在数据帧的末尾添加了所需的信息。

4 个答案:

答案 0 :(得分:6)

我认为您可以insert使用Series df2MODEL一起使用map df2NaN列中的某些值是df1.insert(2, 'MAKE', df1['MODEL'].map(df2.set_index('MODEL')['MAKE'])) print (df1) ID MODEL MAKE REQUESTS ORDERS 0 1 Golf Volkswagen 123 4 1 2 Passat NaN 34 5 2 3 Model 3 Tesla 500 8 3 4 M3 BMW 5 0 遗失得到height: auto):

{{1}}

答案 1 :(得分:1)

我总是发现合并是一种简单的方法:

df1.merge(df2[['MODEL', 'MAKE']], how = 'left')

但是,我必须承认,如果您想要将新专栏称为“制作”,那么它就不会那么简短。

答案 2 :(得分:0)

join方法的行为与VLOOKUP非常相似。它将第一个数据框中的列与第二个数据框的索引连接起来,因此您必须将MODEL设置为第二个数据框中的索引,并且只抓取MAKE列。

df.join(df1.set_index('MODEL')['MAKE'], on='MODEL')

看看documentation for join,因为它实际上使用了VLOOKUP这个词。

答案 3 :(得分:0)

虽然不是在这种情况下,但是在某些情况下df2包含多于两列,而您只想基于特定的列将其中之一添加到df1中。这是您可能会有用的通用代码。

df = pd.merge(df1, df2[['MODEL', 'MAKE']], on = 'MODEL', how = 'left')