我想过滤一个巨大的python pandas数据帧。表中有四列。在
FLAT_DF.head()
---
chr loc cell reads
1 6458 TCTTTCCTCACGGTTA 1
1 6459 TCTTTCCTCACGGTTA 1
1 6460 TCTTTCCTCACGGTTA 1
1 6461 TCTTTCCTCACGGTTA 3
1 6462 TCTTTCCTCACGGTTA 1
1 6463 TCTTTCCTCACGGTTA 1
1 6464 TCTTTCCTCACGGTTA 1
1 6465 TCTTTCCTCACGGTTA 1
1 6914 GGGCACTTCGGAAATA 1
1 6914 ACGATGTTCAGTTAGC 1
1 6914 CGACTTCGTTGTACAC 1
1 6914 AACTGGTCACGCTTTC 1
1 6914 TGTTCCGTCGTTTAGG 1
1 6914 GACTGCGGTGTTTGGT 2
1 6914 AGCTCCTTCCACGACG 1
我试图用一组复杂的规则过滤数据帧。在
^{pr2}$上面的代码可以很好地处理示例数据,但是在过滤整个表时需要很长时间才能完成。
有更好的方法来实现它吗?我可以用np.where()
代替吗?在
我将使用^{} 这样构造它
说明
pd.factorize
返回散列事物数组的整数因式分解。在f, u
的情况下,我们对'cell'
列进行因子分解。其中u
是唯一的单元格值(这里不需要)np.bincount
计算一个“bin”被引用的次数,并告诉我们如果我们刚刚传递了'cell'
列中每个唯一的细胞出现的次数。但是我们没有,我们还传递了r
,这是weights
参数。不是每次遇到来自f
的“bin”时递增一个,而是增加r
中相应的值。它充当groupby
和sum
。通过随后用f
对结果进行切片,我们有效地得到了groupby
,transform
,sum
。这比你刚才做的要快得多。在相关问题 更多 >
编程相关推荐