问题来源于一群小伙伴,其描述如下:
存在N对数据(X-Y形式),且X存在重复,即N对数据由X1-Y1、X1-Y2、X1-Y3、X2-Y4的形式组成。需要找出各个Xi对应下的Y最大值Ymax并重新进行存储至新表中。示意如下:

图1-1 问题描述
2.案例代码
基于问题描述,本文案例为建立一个6×6×6的模型,找出各个Z坐标下的单元ID最大值。python代码如下:
#代码背景#建立一个6*6*6的立方体,提取各个z坐标下的单元id,找出各个z坐标下的最大单元id并单独输出为excelimport itasca as itimport pandas as pdit.command("python-reset-state false")#建立模型it.command("""model newzone create brick size 6 6 6zone densify""")#创建一个空字典zid和一个空列表zposzid = {}zpos = []#遍历单元,将ID-z坐标以键-值对的方式存放在zid中,将各单元的z坐标存放在zpos中for z in it.zone.list():zid[z.id()]=z.pos_z()zpos.append(z.pos_z())#对z坐标去重new_zpos = list(set(zpos))#获取z坐标个数j = len(new_zpos)#创建一个空字典new_zidnew_zid = {}#遍历z坐标,将同一z坐标对应的单元id存放于列表keys中并获取最大值,然后将z坐标-最大ID以键-值对的方式存放于字典new_zid中for i in range(j):keys = []for key in zid.keys():if zid[key] == new_zpos[i]:keys.append(key)key_max = max(keys)new_zid[new_zpos[i]] = key_max#将字典new_zid中的键值对以z坐标从小到大进行排序sorted_new_zid = dict(sorted(new_zid.items(),key=lambda x:x[0]))#将字典new_zid中单元ID、z坐标分别存放在列表id_list、pos_list中id_list = list(sorted_new_zid.values())pos_list = list(sorted_new_zid.keys())#创建空字典toExcel,并将上述列表id_list、pos_list存放在空字典toExcel中toExcel = {}toExcel['ZPOS'] = pos_listtoExcel['ID'] = id_list#通过pandas库输出字典toExceldf = pd.DataFrame(toExcel)df.to_excel('ceshi.xlsx',index=False)

图3-1 输出结果