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

时间:2019-10-14 12:24:00

标签: pandas

我有一个总计字典:

postgresql

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

df

我想根据上面的字典添加country year china 1990 china 1999 mexico 1989 .... 的新列。我已经尝试过了,但是不起作用:

totals

什么是正确的方法?

1 个答案:

答案 0 :(得分:1)

第一个想法是MultiIndexIndex.map一起使用DataFrame.set_index

df['total'] = df.set_index(['country', 'year']).index.map(totals)

或创建Series并使用DataFrame.join

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