У меня есть фрейм данных (p4p5_merge
), который в настоящее время выглядит следующим образом:
SampleID expr Gene Period tag \
1 HSB666 3.663308 ENSG00000147996 5 HSB666|ENSG00000147996
2 HSB666 3.663308 ENSG00000147996 5 HSB666|ENSG00000147996
3 HSB666 3.663308 ENSG00000147996 5 HSB666|ENSG00000147996
4 HSB666 3.663308 ENSG00000147996 5 HSB666|ENSG00000147996
5 HSB651 3.207474 ENSG00000174749 4 HSB651|ENSG00000174749
6 HSB651 3.207474 ENSG00000174749 4 HSB651|ENSG00000174749
7 HSB651 3.207474 ENSG00000174749 4 HSB651|ENSG00000174749
8 HSB651 3.207474 ENSG00000174749 4 HSB651|ENSG00000174749
9 HSB651 3.207474 ENSG00000174749 4 HSB651|ENSG00000174749
10 HSB195 0.214731 ENSG00000188157 4 HSB195|ENSG00000188157
11 HSB195 0.214731 ENSG00000188157 4 HSB195|ENSG00000188157
12 HSB195 0.214731 ENSG00000188157 4 HSB195|ENSG00000188157
14 HSB152 5.062444 ENSG00000188157 4 HSB152|ENSG00000188157
15 HSB627 2.062444 ENSG00000174749 4 HSB627|ENSG00000174749
16 HSB627 2.062444 ENSG00000174749 4 HSB627|ENSG00000174749
17 HSB627 2.062444 ENSG00000174749 4 HSB627|ENSG00000174749
18 HSB627 2.062444 ENSG00000174749 4 HSB627|ENSG00000174749
19 HSB627 2.062444 ENSG00000174749 4 HSB627|ENSG00000174749
20 HSB627 2.062444 ENSG00000174749 4 HSB627|ENSG00000174749
21 HSB627 2.062444 ENSG00000174749 4 HSB627|ENSG00000174749
22 HSB627 2.062444 ENSG00000174749 4 HSB627|ENSG00000174749
23 HSB627 2.062444 ENSG00000174749 4 HSB627|ENSG00000174749
Consequence
1 upstream_gene_variant
2 upstream_gene_variant
3 upstream_gene_variant
4 upstream_gene_variant
5 upstream_gene_variant
6 upstream_gene_variant
7 upstream_gene_variant
8 upstream_gene_variant
9 upstream_gene_variant
10 upstream_gene_variant
11 upstream_gene_variant
12 upstream_gene_variant
14 upstream_gene_variant
15 upstream_gene_variant
16 upstream_gene_variant
17 upstream_gene_variant
18 upstream_gene_variant
19 upstream_gene_variant
20 upstream_gene_variant
21 upstream_gene_variant
22 upstream_gene_variant
23 intron_variant
Теперь я хочу сгруппировать по Gene
, отсортировать по убыванию expr
, а затем отфильтровать фрейм данных по строкам, которые находятся в нижних 10% expr
значений PER Gene
группы (10-й процентиль ). Поэтому я выполняю следующее:
1) Сортировка по убыванию expr (SUCCEEDS)
p4p5_sort= p4p5_merge.sort_values(['expr', 'Gene'],
ascending=[False, True]).reset_index(drop=True)
2) Группировка по гену и фильтрация для нижних 10% экспрессии / гена (FAILS)
p4p5_bottom10 = (p4p5_sort[p4p5_sort.groupby('Gene')['expr'].
apply(lambda x: x < x.quantile(0.1))])
Шаг 1 работает так, как он должен, но когда я запускаю Шаг 2, я просто получаю следующий ответ:
sys:1: DtypeWarning: Columns (15,16,22,36,37,38,39) have mixed types. Specify dtype option on import or set low_memory=False.
Empty DataFrame
Columns: [SampleID, expr, Gene, Period, tag, Consequence]
Index: []
Если это поможет, R-эквивалент того, чего я пытаюсь достичь, это:
p4p5_bottom10 <- p4p5_merge %>% select(Gene, expr, SampleID, Period) %>%
group_by(Gene) %>%
arrange(Gene, desc(expr)) %>%
filter(expr < quantile(expr, 0.1))