每次出现两个键时如何在df2中填充df1中的值-Python DataFrame

时间:2019-05-10 00:11:23

标签: python pandas join

我正在尝试在类似的表df1df2之间进行左联接,如下所示:

df2

Year    Team    Elo
1975    ANA     1483.527161
1975    BOS     1528.148559
1976    ARI     1499.237268
1976    LAD     1533.241241
1977    ATL     1490.446315
1978    BAL     1533.906786
1979    BOS     1528.148559
1980    CHC     1473.185062
1981    CHW     1494.119
1981    PIT     1507.463466

“此示例与我的真实表之间的区别是,我原来的df2表包含大约40个不同的年份,每年包含大约20个不同的团队。我的意思是每年,每个团队的Elo值都不同。”

此表df1

Game_ID         Team    Value 1     Value2      Year
HOU197504070    ANA     HOU         ATL         1975
HOU197504080    LAD     LAD         ATL         1975
HOU197504070    BOS     ATL         CHW         1975
HOU197504080    CHC     HOU         ATL         1975

我要使用的代码是:

df1= df1.join(df2, on=['Year','Team'])

但是,我遇到此错误:

ValueError: len(left_on) must equal the number of levels in the index of "right"

我的预期输出是

    Game_ID         Team    Value 1     Value2      Year    Elo
    HOU197504070    ANA     HOU         ATL         1975    1483.527161
    HOU197504080    LAD     LAD         ATL         1975    0
    HOU197504070    BOS     ATL         CHW         1975    1528.148559
    HOU197504080    CHC     HOU         ATL         1975    0

谢谢。

1 个答案:

答案 0 :(得分:2)

您需要合并,而不是联接(后者会尝试在索引上进行合并):

df1.merge(df2, on=['Year', 'Team'], how='left').fillna(0)