我正在尝试加入两个数据框,但无法理解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
我已经查看了合并,连接和映射,但所有示例都在数据帧的末尾添加了所需的信息。
答案 0 :(得分:6)
我认为您可以insert
使用Series
df2
与MODEL
一起使用map
df2
中NaN
列中的某些值是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')