程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了根据 Pandas python大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决根据 Pandas python?

开发过程中遇到根据 Pandas python的问题如何解决?下面主要结合日常开发的经验,给出你关于根据 Pandas python的解决方法建议,希望对你解决根据 Pandas python有所启发或帮助;

以下是我的数据框的简化: 我有成千上万的基因对在不同的细胞类型和 3 种细胞类型中重复(可能有 9 种组合)

基因对 cell_types other_data
gene4_gene5 cell1_cell2
gene1_gene2 cell1_cell1
gene1_gene2 cell1_cell3
gene2_gene3 cell3_cell2
gene4_gene5 cell2_cell2
gene4_gene5 cell1_cell2

在我所有相同的基因对中(这里我使用了 groupby),我想检查是否存在某些 cell_types 组合。如果它们是,例如一组基因对存在“cell1_cell2”、“cell1-cell3”和“cell1-cell1”,那么我想在一个新列中给这个基因对一个标签,说“cell1 是一个通用发送者" 并且一个基因对可以有多个标签。我希望看到该列添加到我的原始 df 中以用作元数据。 我看过多个问题和视频,但无法正确编码。任何人都可以帮我吗?非常感谢

解决方法

鉴于您想坚持使用原始数据结构,解决方案可能是使用 df.loc 在 cell_types 列中查找与“基因对”列中的给定值匹配的所有值,将其转换为列出并检查定义“通用发件人”的预定义单元格类型列表中的所有值是否都出现在该列表中:

import pandas as pd

data = [ { "Gene pairs": "gene4_gene5","cell_types": "cell1_cell2" },{ "Gene pairs": "gene1_gene2","cell_types": "cell1_cell1" },"cell_types": "cell1_cell3" },{ "Gene pairs": "gene2_gene3","cell_types": "cell3_cell2" },{ "Gene pairs": "gene4_gene5","cell_types": "cell1_cell3" } ]
df=pd.DataFrame(data)
df['new column'] = df['Gene pairs'].apply(lambda x: "universal sender" if all(item in df.loc[df['Gene pairs'] == x]['cell_types'].tolist() for item in ["cell1_cell2","cell1_cell3","cell1_cell1"]) else NonE)

输出:

|    | Gene pairs   | cell_types   | new column       |
|---:|:-------------|:-------------|:-----------------|
|  0 | gene4_gene5  | cell1_cell2  | universal sender |
|  1 | gene1_gene2  | cell1_cell1  |                  |
|  2 | gene1_gene2  | cell1_cell3  |                  |
|  3 | gene2_gene3  | cell3_cell2  |                  |
|  4 | gene4_gene5  | cell1_cell1  | universal sender |
|  5 | gene4_gene5  | cell1_cell3  | universal sender |

或者您可以将其包装在一个函数中以提高可读性,或者如果您想添加其他过滤器:

def lookup(row):
  cells = sorted(df.loc[df['Gene pairs'] == row['Gene pairs']]['cell_types'].tolist())
  if all(item in cells for item in ["cell1_cell2","cell1_cell1"]):
    return_value = "universal sender" 
  else:
    return_value = None
  return return_value

df['new column'] = df.apply(lambda row: lookup(row),axis=1)

大佬总结

以上是大佬教程为你收集整理的根据 Pandas python全部内容,希望文章能够帮你解决根据 Pandas python所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:根据