Python-类似于VLOOKUP(Excel)的函数

2024-05-14 07:18:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图连接两个数据帧,但无法理解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

我已经看过merge、join和map,但是所有的例子都只是在数据帧的末尾附加了所需的信息。


Tags: 数据idmakemodelrequestsm3orderstesla
3条回答

虽然在本例中没有,但可能存在这样的情况:df2有两个以上的列,您只需要根据一个特定的列作为键将其中的一个列添加到df1。下面是一个通用代码,您可能会发现它很有用。

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

join方法的作用非常类似于VLOOKUP。它将第一个数据帧中的列与第二个数据帧的索引连接起来,因此必须将MODEL设置为第二个数据帧中的索引,并且只获取MAKE列。

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

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

我认为您可以通过使用df2创建的Series使用^{}^{}(如果df2中的MODEL列中缺少getNaN中的某个值):

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

相关问题 更多 >

    热门问题