我正在尝试在类似的表df1
和df2
之间进行左联接,如下所示:
表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
谢谢。
答案 0 :(得分:2)
您需要合并,而不是联接(后者会尝试在索引上进行合并):
df1.merge(df2, on=['Year', 'Team'], how='left').fillna(0)