我有一个熊猫数据框,例如:
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,合酶(第二列)。 为此,所有三个途径的基因家族数(第三列)必须为正数(> 0)-ABC> 0; Wzy> 0,合酶> 0。
此数据框子集的结果为:
Species
uniSU2
Aullax
我认为这让我半途而废:
geneCount_stacked.loc[geneCount_stacked['Number of Gene Families'] > 0, ['Species','Pathway']]
但是我不能锻炼如何从这里前进。
非常感谢!
答案 0 :(得分:3)
尝试一下:
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