在其他列中选择满足多个条件的列值

Posted

技术标签:

【中文标题】在其他列中选择满足多个条件的列值【英文标题】:Select column values satisfying multiple conditions in other columns 【发布时间】:2020-09-08 01:34:03 【问题描述】:

我有一个熊猫数据框,例如:

    Species     Pathway     Number of Gene Families
1    uniSU2     ABC           1.0
2    uniSU2     Wzy           11.0
3    uniSU2     Synthase      2.0
4    n116       Wzy           0.0   
5    n116       ABC           4.0
7    n116       Synthase      14.0
8    Aullax     ABC           9.0
9    Aulax      Synthase      1.0
10   Aullax     Wzy           2.0
11   Criepi     Wzy           0.0
12   Criepi     ABC           2.0
13   Criepi     Synthase      3.0

我想选择具有所有三种可能途径的物种(第一列) - ABC、Wzy、合成酶(第二列)。 为此,对于所有三种途径,基因家族的数量(第 3 列)必须是正数(>0) - ABC > 0; Wzy > 0 和 Synthase > 0。

我的数据框的这个子集的结果是:

Species 
uniSU2
Aullax

我认为这让我成功了:

geneCount_stacked.loc[geneCount_stacked['Number of Gene Families'] > 0, ['Species','Pathway']] 

但我不知道如何从这里继续前进。

提前非常感谢!

【问题讨论】:

你的真实数据中可以有其他途径名称吗? 没有。只有三个 - ABC、合成酶和 Wzy 【参考方案1】:

试试这个:

res = pd.DataFrame('Species': [x for x, y in df.groupby('Species') if  len('ABC', 'Wzy', 'Synthase' & set(y.Pathway)) == 3  and all(y['Number of Gene Families'] > 0)])

输出

  Species
0  Aullax
1  uniSU2

【讨论】:

以上是关于在其他列中选择满足多个条件的列值的主要内容,如果未能解决你的问题,请参考以下文章

创建一个新列,它是满足两个条件的多个其他列中的日期数之和

如何使用 JPA 原生查询选择多个同名的列?

如何在列中搜索多个字符串并更新单元格值?

如何为单个列中存在的值添加多个条件并将结果显示在单独的列中?

更新与其他列具有一个或多个相同值的列值

需要列值分散在多个列中