Pandas 如何根据其他两列的值设置列?

Pandas 如何根据其他两列的值设置列?,pandas,Pandas,我有一本总计词典: totals = {('china', 1990): 12345, ('china', 1999): 6789, ('mexico', 1989): 98765} 和一个数据帧df: country year china 1990 china 1999 mexico 1989 .... 我想根据上面的字典添加一个新的总计列。我试过这个,但不起作用: df['total'] = df[['country', 'year']].apply(lambd

我有一本总计词典:

totals = {('china', 1990): 12345, ('china', 1999): 6789, ('mexico', 1989): 98765}
和一个数据帧
df

country   year
china     1990
china     1999
mexico    1989
....
我想根据上面的字典添加一个新的
总计列
。我试过这个,但不起作用:

df['total'] = df[['country', 'year']].apply(lambda x: totals[x])
正确的方法是什么?

第一个想法是由
多索引使用:

或者创建
系列
并使用:


df['total'] = df.set_index(['country', 'year']).index.map(totals)
df = df.join(pd.Series(totals, name='total'), on=['country', 'year'])
print (df)
  country  year  total
0   china  1990  12345
1   china  1999   6789
2  mexico  1989  98765