问题描述
我正在尝试根据查找表将数据添加到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)
显然,两个表都将包含更多数据,但希望您能理解。因此,我希望基于v1
,v2
和{{1} }。我已经尝试了涉及v3
的各种解决方案以及其他一些类似的事情,并且能够使它适用于简化版本,但没有为表添加值。到目前为止,我不会再尝试失败的细节了,但是我认为最好的解决方案(至少对于我的Python编程水平)是创建一个结合sample_df
的索引字符串,每一行的landuse
和soil
值,并根据此值在表之间进行匹配。因此,例如,rain
第一行的字符串为np.logical_and()
,我可以将其添加到两个表中,然后用作索引。
但是,当我尝试使用以下方法创建索引字符串时:
landuse
它将rain
和soil
的所有值合并到字符串中,这不是我想要的。
而且,当我使用简单的数字索引键对下一步进行测试时:
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 (将#修改为@)