使用列标题的Pandas查找/透视

2024-04-27 03:46:40 发布

您现在位置:Python中文网/ 问答频道 /正文

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

WatershedID LandCover
          2      Corn
          8      Corn
          2       Soy
          8       Soy

以及包含每个流域/土地覆盖组合面积的单独查找表:

^{pr2}$

我想做的是将列附加到第一个表中,该表包含查找表中相应的行/列值,如下所示:

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]

但考虑到我桌子的大小,这是很慢的。有没有一种不需要迭代的更快的方法?我一直在尝试多索引和透视表,但到目前为止还没有任何结果。在


Tags: idforcover类别表格土地landsoy
1条回答
网友
1楼 · 发布于 2024-04-27 03:46:40

可以使用^{}^{}

df3 = df2.set_index('WatershedID').unstack().reset_index()
df3.columns = ['LandCover','WatershedID','Area']
print (df3)
  LandCover  WatershedID  Area
0      Corn            2    14
1      Corn            3     2
2      Corn            5    18
3      Corn            7    21
4      Corn            8     6
5       Soy            2     1
6       Soy            3    14
7       Soy            5     8
8       Soy            7     2
9       Soy            8    31

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

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

^{pr2}$

相关问题 更多 >