我有两个df。一个将值映射到ID。另一个具有这些ID的多个条目。我希望第一个数据帧的df具有分配给相应ID的值。
df1 =
Val1 Val2 Val3
x 1000 2 0
y 2000 3 9
z 3000 1 8
df2=
foo ID bar
0 something y a
1 nothing y b
2 everything x c
3 who z d
result=
foo ID bar Val1 Val2 Val3
0 something y a 2000 3 9
1 nothing y b 2000 3 9
2 everything x c 1000 2 0
3 who z d 3000 1 8
我尝试过合并加入(显然不正确)但是当我这样做时,我得到了一堆NaN。似乎我在每个备用ID上都获得了NaN。 我也尝试通过ID索引两个DF,但这似乎也没有帮助。我显然错过了一些我认为是核心功能的东西,但我无法理解它。
答案 0 :(得分:3)
merge
和join
都可以获得您想要的结果DataFrame。由于您的一个DataFrame被索引(通过ID)而另一个只有一个整数索引,merge
是合理的选择。
合并:
# use ID as the column to join on in df2 and the index of df1
result = df2.merge(df1, left_on="ID", right_index=True, how="inner")
加入:
df2.set_index("ID", inplace=True) # index df2 in place so you can use join, which merges by index by default
result = df2.join(df1, how="inner") # join df1 by index