首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据挖掘中的数据抽取

数据挖掘中的数据抽取
EN

Stack Overflow用户
提问于 2022-05-25 03:44:54
回答 1查看 30关注 0票数 -1

我的数据就像:

代码语言:javascript
复制
Names        Subsets    Subnames       SubNumber       Numbers
AE,AI,AK     OP,OP,DO   ABC,ABC,ABC    A-890,A891      9OP-A,98-OPB,8IC,87AC,58AP,7PL
AO,AI        DO,AP      KLM,ABC        P890            L97, 52PL
IK,LJ,MI     OP,OP,DO   IJK,IJK,OPQ    90AKI           87AU, 90OP,89JN

像这样的数据,

对于带有OP,OP,DO的子集,我需要以I结尾的名称编号。

就像。因为第一行有子集OP,OP,DO,而带有第一个索引的名称在末尾有字母I。因此,具有每个第一个索引98-OPB,58AP的数字是我需要的输出。(第一个索引意味着名称中有三个元素。因此,在第二个数字索引之后,第零指数再次开始)

代码语言:javascript
复制
Names        Subsets    Subnames       SubNumber       Numbers                         Output
AE,AI,AK     OP,OP,DO   ABC,ABC,ABC    A-890,A891      9OP-A,98-OPB,8IC,87AC,58AP,7PL  98-OPB,58AP
AO,AI        DO,AP      KLM,ABC        P890            L97, 52PL
IK,LJ,MI     OP,OP,DO   IJK,IJK,OPQ    90AKI           87AU, 90OP,89JN                 89JN

在第三行中,MI是第二个索引,因此这里需要具有第二个索引的数字89JN

索引从零开始。

EN

回答 1

Stack Overflow用户

发布于 2022-05-25 04:10:35

这本质上是一个for循环,因为您正在处理object dtype。你也许可以做一些小的改进,但我真的不知道如何从我的头脑中获得任何巨大的收获--这是一个非常混乱的“提取”逻辑:

代码语言:javascript
复制
def extract(row):
    names = row.Names.split(",")
    numbers = row.Numbers.split(",")
    idxs = {i for i, name in enumerate(names) if name[-1] == "I"}
    return ",".join(num for i, num in enumerate(numbers) if i % len(names) in idxs)

输出:

代码语言:javascript
复制
>>> df["Output"] = df[df["Subsets"] == "OP,OP,DO"].apply(extract, axis=1)
>>> df
      Names   Subsets     Subnames   SubNumber                         Numbers       Output
0  AE,AI,AK  OP,OP,DO  ABC,ABC,ABC  A-890,A891  9OP-A,98-OPB,8IC,87AC,58AP,7PL  98-OPB,58AP
1     AO,AI     DO,AP      KLM,ABC        P890                        L97,52PL          NaN
2  IK,LJ,MI  OP,OP,DO  IJK,IJK,OPQ       90AKI                  87AU,90OP,89JN         89JN

如果你不想要NaN

代码语言:javascript
复制
df["Output"] = df["Output"].fillna("")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72371739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档