组合没有Nans的DataFrame

时间:2013-04-17 02:23:31

标签: python pandas

我有两个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,但这似乎也没有帮助。我显然错过了一些我认为是核心功能的东西,但我无法理解它。

1 个答案:

答案 0 :(得分:3)

mergejoin都可以获得您想要的结果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