gpt4 book ai didi

python - 在Python中的for循环中匹配字符串

转载 作者:行者123 更新时间:2023-12-01 01:20:56 24 4
gpt4 key购买 nike

我有一个 pandas 数据框 df ,看起来像这样

enter image description here

df = {'Regions': {0: 'REGION1', 1: 'REGION2'}, 'x': {0: '1249-43,1269-12,1280-12', 1: '1267-12,1269-12,1280-12'}}

以及名为rasters的光栅文件列表

rasters = 'SI_1206-33_50cm.tif', 'SI_1249-43_50cm.tif', 'SI_1269-12_50cm.tif', 'SI_1267-12_50cm.tif', 'SI_3865-17_50cm.tif' 

我想要做的是创建一个新列表,其中包含与每个区域的 df.x 中的字符串匹配的 raster 中的所有条目。

for index, row in df.iterrows():
region = row['Regions']
tiffs = row['x']
rasterlist = []
for raster in rasters:
if raster in tiffs:
rasterlist = rasterlist.append(raster)
print(rasterlist)

因此,在迭代栅格时,我尝试为第一次迭代获取包含 'SI_1249-43_50cm.tif''SI_1269 的 rasterlist -12_50cm.tif'(对于 REGION1),对于第二次迭代,rasterlist 只包含 'SI_1267-12_50cm.tif'(对于 REGION2)。我想将列表rasterlist用作使用arcpy中的MosaicToNewRaster_management函数进行进一步处理的输入。

此代码似乎不起作用的是模式匹配,每次迭代我都会得到一个空的rasterlist变量。我认为是这种情况,因为 df.x 中的不同列表项由逗号分隔,并且 in 函数似乎不起作用。这就是我陷入困境并希望得到一些意见的地方。

最佳答案

您检查的方向错误。您正在使用

if raster in tiffs

但是tiffs就像 '1249-43,1269-12,1280-12' 一样显然没有任何栅格在其中。您需要拆分 tiff 列表并沿相反方向检查以查看栅格中是否有任何 tiff。

tiffs = row['x'].split(',')
raster_list = []
for raster in rasters:
for tiff in tiffs:
if tiff in raster:
raster_list.append(raster)
# Assuming each tiff matches with only one raster
# you can break to save some time here.
break
print(raster_list)

如果您可以告诉我们有关栅格和 tiff 之间映射的更多信息,那么可能可以使用 dict 来完成更有效的操作。或set s。

关于python - 在Python中的for循环中匹配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53853201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com