python - 添加一列与其他两列匹配,一列包含代表值

标签 python pandas

我有如下三个数据框:

df1
col1 CAND_SNP
1     a1
1     a2
1     a3
1     a4
2     b1
3     c1
3     c2
3     c3

df2
col1 LEAD_SNP
1     a1
2     b1
3     c1
    


df3
snp col2
a3     x1
a21    x2
a31    x3
a41    x4
b11    x5
c11    x6
c21    x7
c31    x8

我需要将 df1CAND_SNPdf3snp 进行匹配,以填充 中的新列>df2,值为 "yes""no"。对于 df1col1,匹配需要分组。在上面的示例中,df1col1 中有3 个组。如果这些组在 CAND_SNP 中的任何对应值与 df3snp 匹配,则 df2 的新列将是"yes" 如下:有什么帮助吗?

df2
    col1 LEAD_SNP   col3
    1     a1        Yes
    2     b1        No
    3     c1        No

最佳答案

如果我没理解错的话,你可以将df1col1分组,然后查看col1<中是否存在col2的值df3。然后与df2合并:

df1['col3'] = df1.groupby('col1')['CAND_SNP'].apply(lambda s: s.isin(df3['snp']))
df2 = df2.merge(df1.groupby('col1')['col3'].any(), left_on='col1', right_index=True, how='left')

如果您需要'Yes'/'No' 作为值,请使用

df2.col3.map({True: 'Yes', False: 'No'})

关于python - 添加一列与其他两列匹配,一列包含代表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69030054/

相关文章:

Python:当特定值时如何创建第一行的新数据框

python - 如何为 python 脚本更新数据库编写 makefile?

python - 使用 swig 针对共享 C 库构建 python C 扩展时未解析的外部符号

python - 迭代列表并将该值用作字典键

python - 片段着色器 : get distance from fragment to bezier curve

python - 无需循环即可替换 Pandas 列中的多个值

python - 使用 for 循环将一行 (pandas) 与下一行进行比较,如果不相同,则从列中获取一个值

python - 如何拆分 Pandas 中的几列数据?

Python:uMongo 排序

python - 将 pandas DataFrame 转换为列表列表