Python 根据条件查找对应物质并记录

有一个config file: dfspeciesConfig,
for col in wavecolM3L:
如果wavecolM3L list中(Col-1,Col+1) 范围内在dfspeciesConfig里面能找到对应物质, 则保留此wave, 并记录相应的species (SiO/Ni),请问如何写?
Python 根据条件查找对应物质并记录
wavecolM3L
Python 根据条件查找对应物质并记录

2022.05.17

Python 根据条件查找对应物质并记录
这里面speciesList 是pConfig返回的结果,跟您帮我写的那个是一个意思么? 但是有个报错
dfspeciesConfig 和需要与原始speciesList(config 标准表)比对的待比对物质列表

Python 根据条件查找对应物质并记录
Python 根据条件查找对应物质并记录
2022.05.17 18:15
就差一点点了, 运行单个inP =241.0, 查找到的物质是对的, 数据类型按您的改了,运行报错如下, 仍然提示'TypeError: 'float' object is not subscriptable:
Python 根据条件查找对应物质并记录


回答:

我理解,你看是否是这样的:

  1. 有一个名为dfspeciesConfig的配置文件中,记录了物质(名)和对应的物质特性值,比如Au对应的是201.2
  2. 在WaveColM3L中记录了某种测试的 物质特性值 列表
  3. 现在遍历WaveColM3L的每条记录,判断每条记录是否 对应于dfspeciesConfig 中的某个物质(特性),如果有对应的,则保留该记录,并在其后标注 对应的 物质名

其中3的比较中测试记录的物质特性值可能存在偏差,其对应的物质特性可能存在 正负1 的偏差,即如果 记录的值 在 某个配置值的正负1范围内,还是认为是对应于该物质。

如果是这样的,这其实类似一个特殊的查表过程,因为待查表是一个范围表,即首先需要对dfspeciesConfig解析,生成一个待查的范围表(注意这个表不能有重叠区域)

然后就是遍历过程,这里其实还需要明确所谓的保留是指什么,如果没有查到对应物质的要怎么处理?我觉得可能都要保留,只是对查到的多标注对应查到的物质可能更好。

这个估计是什么研究项目中的数据处理?!

根据题主新的介绍,我觉得关键有2个处理过程

  1. 就是对dfspeciesConfig预处理为一个物质特性升序排列的物质特性与物质名列表
  2. 定义一个根据物质特性查表的函数
    下面是这个的伪实现

    python">def takeSecond(elem):

    return elem[1]

    # 解析dfspeciesConfig,因为不知道dfspeciesConfig的具体格式,假定是2个列表

    def pConfig(inConfig):

    # 返回一个数组,数组以物质特性升序排序,每个元素是[物质名,物质特性]

    # inConfig 一个二维数组(列表),第一层是物质特性值,第二个层是物质名

    rt=[]

    for idx in range(len(inConfig[0]) ):

    # 根据特性从0开始,下面处理了数据类型,强制转换为浮点数

    rt.append([inConfig[1][idx], float(inConfig[0][idx])])

    rt=rt.sort(key=takeSecond)

    return rt

    # 下面填入正确的数据来源

    wuList=pConfig(...)

    def getName( inP, PList):

    rt=""

    # inP 转换为浮点数

    inP=float(inP)

    for elem in PList:

    if inP>=elem[1]-1 and inP<= elem[1]+1 :

    rt+=elem[0]+"/"

    rt=rt.str.rstrip("/")

    return rt

    # 开始遍历

    allOut=[]

    # 下面的变量和列表根据你实际调整

    for X in XList :

    aName=getName(X, wuList )

    if aName !="" :

    tList=[X]

    tList.append(aName)

    allOut.append(tList)

    # 遍历完成后allOut就是符合条件的结果,可以对其后续处理,比如输出到文件,或者显示之类。

    因为上述代码没有合适的数据进行验证测试,所以是伪代码,需要根据实际调整部分地方可能才能正常工作。包括但不限于列表索引关系、数据类型转换处理等。

以上是 Python 根据条件查找对应物质并记录 的全部内容, 来源链接: utcz.com/p/938410.html

回到顶部