Python 使用列标题查看/透视

Python 使用列标题查看/透视,python,pandas,numpy,array-broadcasting,Python,Pandas,Numpy,Array Broadcasting,我有一个包含流域ID和土地覆盖类别的表格: WatershedID LandCover 2 Corn 8 Corn 2 Soy 8 Soy 以及一个单独的查找表,其中包含每个流域/土地覆盖组合的面积: WatershedID Corn Soy 2 14 1 3 2 14 5 18

我有一个包含流域ID和土地覆盖类别的表格:

WatershedID LandCover
          2      Corn
          8      Corn
          2       Soy
          8       Soy
以及一个单独的查找表,其中包含每个流域/土地覆盖组合的面积:

WatershedID  Corn  Soy
          2    14    1
          3     2   14
          5    18    8
          7    21    2
          8     6   31
我想做的是将一列附加到第一个表中,该表包含查找表中相应的行/列值,如下所示:

WatershedID LandCover   Area
          2      Corn     14
          8      Corn      6
          2       Soy      1
          8       Soy     31
通过使用for循环进行迭代,我成功地做到了这一点:

areas = []
for watershed_id, land_cover in tableA.iterrows():
    areas.append(tableB.loc[watershed_id][land_cover]
但考虑到我桌子的大小,这是缓慢的。有没有一种不涉及迭代的更快的方法?我一直在试验多索引和透视表,但到目前为止还没有任何效果。

您可以使用:

如果有更多相同的列,则需要为联接指定列:

print (pd.merge(df1,df3, on=['WatershedID','LandCover']))
   WatershedID LandCover  Area
0            2      Corn    14
1            8      Corn     6
2            2       Soy     1
3            8       Soy    31
print (pd.merge(df1,df3, on=['WatershedID','LandCover']))
   WatershedID LandCover  Area
0            2      Corn    14
1            8      Corn     6
2            2       Soy     1
3            8       Soy    31