# coding=utf-8
import xlrd
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
data=xlrd.open_workbook('c:/Identity.xlsx')
data.sheet_names()
table=data.sheet_by_name('Identity')
nrows=table.nrows
ncolos=table.ncols
i=1
dic={}
# FID,POINTID,GRID_CODE,ID
#FID_POINT_dict,FID_GRID_dict,FID_ID_dict,ID_FID_dict
FID_GRID_dict={}
FID_ID_dict={}
ID_FID_dict={}
ID_GRID_dict={}
#求得结构POINT_GRID_dict
POINT_GRID_dict={}
#-----------------------
#先赋值
for i in range(1,nrows,1):
key=int(table.cell(i,3).value)
if key in ID_GRID_dict.keys():
print ""
else:
ID_GRID_dict[key]=int(table.cell(i, 2).value)
#遍历
# FID,POINTID,GRID_CODE,ID
for i in range(1,nrows,1):
FID=int(table.cell(i,0).value)
POINTID=int(table.cell(i,1).value)
GRID=int(table.cell(i,2).value)
ID=int(table.cell(i,3).value)
if int(table.cell(i,2).value)<=ID_GRID_dict[ID]:
continue
else:
del ID_GRID_dict[ID]
ID_GRID_dict[ID]=GRID
print ID_GRID_dict.__len__()
f=open(r'f:/222.txt','w')
for i in range(1,nrows,1):
FID=int(table.cell(i,0).value)
POINTID=int(table.cell(i,1).value)
GRID=int(table.cell(i,2).value)
ID=int(table.cell(i,3).value)
if (ID in ID_GRID_dict.keys())and(GRID==ID_GRID_dict[ID]):
f.write(str(FID)+"\t"+str(POINTID)+"\t"+str(GRID)+"\t"+str(ID)+"\n")
f.close()
原数据:
FID | POINTID | GRID_CODE | ID |
12124 | 12125 | 7 | 3 |
12121 | 12122 | 18 | 3 |
12122 | 12123 | 13 | 3 |
12123 | 12124 | 13 | 3 |
12117 | 12118 | 24 | 3 |
12118 | 12119 | 18 | 3 |
12119 | 12120 | 23 | 3 |
12120 | 12121 | 41 | 2 |
12107 | 12108 | 24 | 3 |
12108 | 12109 | 18 | 3 |
12109 | 12110 | 18 | 3 |
12110 | 12111 | 23 | 3 |
12111 | 12112 | 18 | 3 |
12112 | 12113 | 30 | 2 |
12113 | 12114 | 30 | 2 |
12114 | 12115 | 29 | 2 |
12115 | 12116 | 30 | 2 |
12116 | 12117 | 30 | 2 |
12102 | 12103 | 19 | 3 |
12103 | 12104 | 19 | 3 |
12104 | 12105 | 13 | 3 |
12105 | 12106 | 29 | 1 |
12106 | 12107 | 30 | 2 |
12099 | 12100 | 19 | 3 |
12100 | 12101 | 19 | 3 |
12101 | 12102 | 13 | 3 |
12097 | 12098 | 24 | 3 |
12098 | 12099 | 24 | 3 |
12095 | 12096 | 37 | 4 |
12096 | 12097 | 38 | 4 |
12089 | 12090 | 8 | 5 |
12090 | 12091 | 13 | 5 |
12091 | 12092 | 42 | 4 |
12092 | 12093 | 38 | 4 |
12093 | 12094 | 34 | 4 |
12094 | 12095 | 39 | 4 |
12082 | 12083 | 9 | 5 |
12083 | 12084 | 13 | 5 |
12084 | 12085 | 14 | 5 |
12085 | 12086 | 19 | 5 |
12086 | 12087 | 38 | 4 |
12087 | 12088 | 34 | 4 |
12088 | 12089 | 29 | 4 |
12077 | 12078 | 8 | 5 |
12078 | 12079 | 5 | 5 |
12079 | 12080 | 24 | 5 |
12080 | 12081 | 18 | 5 |
12081 | 12082 | 45 | 6 |
12071 | 12072 | 18 | 5 |
12072 | 12073 | 23 | 5 |
12073 | 12074 | 44 | 6 |
12074 | 12075 | 39 | 6 |
12075 | 12076 | 45 | 6 |
12076 | 12077 | 45 | 6 |
12065 | 12066 | 13 | 5 |
12066 | 12067 | 43 | 6 |
12067 | 12068 | 39 | 6 |
12068 | 12069 | 45 | 6 |
12069 | 12070 | 45 | 6 |
12070 | 12071 | 40 | 6 |
12062 | 12063 | 45 | 6 |
12063 | 12064 | 40 | 6 |
12064 | 12065 | 40 | 6 |
12060 | 12061 | 40 | 6 |
12061 | 12062 | 40 | 6 |
12057 | 12058 | 8 | 10 |
12058 | 12059 | 44 | 6 |
12059 | 12060 | 39 | 6 |
12053 | 12054 | 24 | 7 |
12054 | 12055 | 14 | 10 |
12055 | 12056 | 8 | 10 |
12056 | 12057 | 21 | 8 |
12047 | 12048 | 18 | 7 |
12048 | 12049 | 24 | 7 |
12049 | 12050 | 14 | 10 |
12050 | 12051 | 13 | 10 |
12051 | 12052 | 8 | 10 |
12052 | 12053 | 15 | 8 |
12040 | 12041 | 17 | 9 |
根据ID号,求取同一ID号的GRID_CODE的最大值所在的POINTID;