1

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

4

1 回答 1

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
于 2013-04-17T02:35:34.647 回答