首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >索引ids的交叉引用列表

索引ids的交叉引用列表
EN

Stack Overflow用户
提问于 2018-04-17 18:27:26
回答 1查看 78关注 0票数 2

我已经将与某个值相关联的ids列表组合在一起,并将所有这些ids列表放到一个dataframe中。如下所示:(使用index = id)

代码语言:javascript
复制
    phase  list_ids
id  
a1  1      [a1,a2,c3] 
a2  3      [a1,b2,c3]  
b1  3      [a2,b2] 
b2  2      [b1,b2,c1] 
b3  3      [b2,c1] 
c1  1      [a1,a2,c3] 
c2  1      [a1,b1,c4] 
c3  2      [c1,c2,c4] 
c4  1      [c1,c2]

我想迭代这些列表,并将它们交叉引用到id索引,其中位相等于2或3,然后将与原始列表匹配的id保持在原来的列表中(或者如果不可能,使用修改后的列表创建一个新列)。如下所示:

代码语言:javascript
复制
    phase  list_ids
id  
a1  1      [a2,c3] #ids whose phase != 2|3 not kept in list
a2  3      [b2,c3]  
b1  3      [a2,b2] 
b2  2      [b1,b2] 
b3  3      [b2] 
c1  1      [a2,c3] 
c2  1      [b1] 
c3  2      [] 
c4  1      []

如果可能的话,我希望在dataframe对象中这样做,因为每一行都有多个特性/依赖项。关于这件事有什么建议吗?

我的实际数据:

代码语言:javascript
复制
               phase  ids
Study_id             
ACP-103-006    2.0   [ACP-103-006, ACP-103-020, ACP-103-019, ACP-10... 
ACP-103-008    2.0   [ACP-103-006, ACP-103-020, ACP-103-019, ACP-10...  
ACP-103-010    2.0   [ACP-103-042, ACP-103-034, ACP-103-014, ACP-10...  
ACP-103-012    3.0   [ACP-103-042, ACP-103-034, ACP-103-014, ACP-10...  
ACP-103-014    3.0   [ACP-103-042, ACP-103-034, ACP-103-014, ACP-10...   

而D型:

代码语言:javascript
复制
phase float64 
ids object
dtype: object 

和good_ids输出:

代码语言:javascript
复制
print(good_ids)
{'CLS1001-301', 'EFC13799', 'AG120-C-009', 'IRBES_R_04320', 'LTS11298', 'CLS1003-302', '13621', 'TMC-ORI-10-01', '11935', 'C_8428', 'ACP-103-008', 'SFY13476', 'MNTX 301EXT', '14-OBE001-016', '812P310', 'V01-126A-201', 'VX06-770-101', 'EFC11603', ...}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-17 18:41:48

假设列list_ids中的每个元素都是字符串列表,则可以执行以下操作:

首先获得“好”setids (其中阶段为2或3):

代码语言:javascript
复制
good_ids = set(df[df["phase"].isin([2,3])].index)
print(good_ids)
#{'a2', 'b1', 'b2', 'b3', 'c3'}

接下来,使用apply来使用good_ids过滤list_ids

代码语言:javascript
复制
df["list_ids"] = df["list_ids"].apply(lambda x: [val for val in x if val in good_ids])
print(df)
#    phase  list_ids
#id                 
#a1      1  [a2, c3]
#a2      3  [b2, c3]
#b1      3  [a2, b2]
#b2      2  [b1, b2]
#b3      3      [b2]
#c1      1  [a2, c3]
#c2      1      [b1]
#c3      2        []
#c4      1        []
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49885060

复制
相关文章

相似问题

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