pandas筛选数据
步骤:
做出图来发现应该先筛选。
1
Annovar注释的,优点是一个位点一个记录,不用去重等,文档清晰,照着做就能运行出结果。
1
筛选数据:
原始数据每个SRR需要三列,但是做值筛选却不方便对左右进行处理,一个好的办法是将其先拆分为三个表,再对需要筛选的值做成01表,使用相乘的dataframe广播方式解决问题。
1
突然知道这种情况的原因了:
1
结尾有个tab因此有了Unnamed这一列,chr不是索引的名字因此往后顶了一列,如下:
圆圈处是空的因此往后顶了
1
删除chr和每行最后的tab就好了
1
判断值,并生成布尔指标值,只做了第一列:
参考:http://www.cocoachina.com/cms/wap.php?action=article&id=53695
1
配合按列遍历,可以得到布尔转01的表,条件是>10:
1
相除出现问题,改成相加查看问题,想到是赋值的问题,python的赋值还是共用一个内存地址,因此
1
因此df-1 df_1_1是一样的。
1
直接通过重新从文件读dataframe解决
1
相除并筛选
1
获得了SRR布尔表,正确:
1
mapping
reads
df_1:editing
df_2:mapping
df_3:e/m
筛选用的布尔矩阵:
先对df_2筛>10的
再对df_3筛>0.05的
相乘的到筛选矩阵
筛选矩阵*df_1
筛选矩阵*df_2
得到筛选后的合格数据
1
总体思路:拆成3个表,做出布尔表,相乘达到筛选的目的,最后再参考https://zhuanlan.zhihu.com/p/136105318清除全是0的行
结果:
1
确实筛掉了全0行
筛选部分结束。
作者:byejya
链接:https://www.jianshu.com/p/8978e329780b