0
点赞
收藏
分享

微信扫一扫

pandas筛选数据

在觉 2021-09-19 阅读 76
生信

步骤:

做出图来发现应该先筛选。

Annovar注释的,优点是一个位点一个记录,不用去重等,文档清晰,照着做就能运行出结果。

筛选数据:

原始数据每个SRR需要三列,但是做值筛选却不方便对左右进行处理,一个好的办法是将其先拆分为三个表,再对需要筛选的值做成01表,使用相乘的dataframe广播方式解决问题。


突然知道这种情况的原因了:


结尾有个tab因此有了Unnamed这一列,chr不是索引的名字因此往后顶了一列,如下:

圆圈处是空的因此往后顶了

删除chr和每行最后的tab就好了


判断值,并生成布尔指标值,只做了第一列:

参考:http://www.cocoachina.com/cms/wap.php?action=article&id=53695

配合按列遍历,可以得到布尔转01的表,条件是>10:


相除出现问题,改成相加查看问题,想到是赋值的问题,python的赋值还是共用一个内存地址,因此


因此df-1 df_1_1是一样的。

直接通过重新从文件读dataframe解决


相除并筛选


获得了SRR布尔表,正确:


mapping

reads

df_1:editing

df_2:mapping

df_3:e/m

筛选用的布尔矩阵:

先对df_2筛>10的

再对df_3筛>0.05的

相乘的到筛选矩阵

筛选矩阵*df_1  

筛选矩阵*df_2

得到筛选后的合格数据


总体思路:拆成3个表,做出布尔表,相乘达到筛选的目的,最后再参考https://zhuanlan.zhihu.com/p/136105318清除全是0的行


结果:


确实筛掉了全0行

筛选部分结束。

举报

相关推荐

0 条评论