首页 > 解决方案 > 如何根据其他两列的值设置列?

问题描述

我有一本总计字典:

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

和一个数据框df

country   year
china     1990
china     1999
mexico    1989
....

我想totals根据上面的字典添加一个新列。我试过这个,但它不起作用:

df['total'] = df[['country', 'year']].apply(lambda x: totals[x])

这样做的正确方法是什么?

标签: pandas

解决方案


第一个想法是Index.map使用MultiIndexwith 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

推荐阅读