使用在python / QGIS中以编程方式创建的索引字符串进行查找?

问题描述

我正在尝试根据查找表将数据添加到shapefile中。因此,shapefile和查找表都具有土地利用,雨水和土壤属性的值,查找表也具有要基于土地利用/雨水/土壤值添加到我的shapefile中的其他变量的值。这是我在R中相当有信心的事情,但是它必须使用python,因为这是QGIS中使用的语言,而我对python还是很陌生。

此刻,我已经通过仅使用python中的pandas数据帧简化了问题:

import pandas as pd

#1. sample data
landuses = ['Pasture','Pasture','Stonefruit','Vineyard']
soils = [90,120,150,90]
rainfalls = [350,450,550,650]

sample_dict = {'landuse' : landuses,'soil' : soils,'rain' : rainfalls}

sample_df = pd.DataFrame(sample_dict)
print(sample_df)

# 2. lookup table data
v1 = [1,2,3,4]
v2 = [5,6,7,8]
v3 = [9,10,11,12]

lookup_dict = {'landuse' : landuses,'rain' : rainfalls,'v1' : v1,'v2' : v2,'v3' : v3}
lookup_df = pd.DataFrame(lookup_dict)
print(lookup_df)

显然,两个表都将包含更多数据,但希望您能理解。因此,我希望基于v1v2和{{1} }。我已经尝试了涉及v3的各种解决方案以及其他一些类似的事情,并且能够使它适用于简化版本,但没有为表添加值。到目前为止,我不会再尝试失败的细节了,但是我认为最好的解决方案(至少对于我的Python编程水平)是创建一个结合sample_df的索引字符串,每一行的landusesoil值,并根据此值在表之间进行匹配。因此,例如,rain第一行的字符串为np.logical_and(),我可以将其添加到两个表中,然后用作索引。

但是,当我尝试使用以下方法创建索引字符串时:

landuse

它将rainsoil的所有值合并到字符串中,这不是我想要的。

而且,当我使用简单的数字索引键对下一步进行测试时:

sample_df

'Pasture 90 350'部分可以独立工作,但分配工作无效。

有人可以帮助我吗?我猜测该解决方案涉及使用sample_df['index'] = sample_df['landuse'] + " " + str(sample_df['rain']) + " " + str(sample_df['soil']) (据我理解,它等同于R中的soil的python),但我一直无法弄清楚。预先感谢您的协助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)