首页/文章/ 详情

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

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

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并单独输出为excel
import 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
最近编辑:10月前
FLAC3D小技巧
硕士 专注FLAC3D中的小技巧分享...
获赞 36粉丝 209文章 40课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈