首页/文章/ 详情

【Table攻略】多键-值对最值筛选代码

5月前浏览4192
摘要:一段找出某个面分组下所有单元的代码。

1.问题描述

问题来源于一群小伙伴,其描述如下:

存在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 new           zone create brick size 6 6 6           zone 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.结果查看

    图3-1 输出结果

    来源:FLAC3D小技巧
    python
    著作权归作者所有,欢迎分享,未经许可,不得转载
    首次发布时间:2024-02-02
    最近编辑:5月前
    FLAC3D小技巧
    硕士 专注FLAC3D中的小技巧分享...
    获赞 27粉丝 141文章 40课程 0
    点赞
    收藏
    未登录
    还没有评论
    课程
    培训
    服务
    行家
    VIP会员 学习 福利任务 兑换礼品
    下载APP
    联系我们
    帮助与反馈