我在SAMPLE
列中有1-12个数字,对于每个数字,我尝试计算突变数(A:T,C:G等)。这段代码很好用,但是我如何修改代码,让我为每一个变异都有12个条件,而不是为每一个变异写同样的代码12次呢?在
在这个例子中,AT给我一个数字,而SAMPLE=1
。我试图得到每个样品编号(1,2,…12)的AT编号。那么如何修改这个代码呢?我很感激你的帮助。非常感谢。在
SAMPLE MUT
0 11 chr1:100154376:G:A
1 2 chr1:100177723:C:T
2 9 chr1:100177723:C:T
3 1 chr1:100194200:-:AA
4 8 chr1:10032249:A:G
5 2 chr1:100340787:G:A
6 1 chr1:100349757:A:G
7 3 chr1:10041186:C:A
8 10 chr1:100476986:G:C
9 4 chr1:100572459:C:T
10 5 chr1:100572459:C:T
... ... ...
d= df["SAMPLE", "MUT" ]
chars1 = "TGC-"
number = {}
for item in chars1:
dm= d[(d["MUT"].str.contains("A:" + item)) & (d["SAMPLE"].isin([1]))]
num1 = dm.count()
number[item] = num1
AT=number["T"]
AG=number["G"]
AC=number["C"]
A_=number["-"]
我也有类似的回答
生产
^{pr2}$您可以使用正则表达式替换创建一个具有突变类型(a->;T,G->;C)的列,然后应用pandas groupby进行计数。在
数据的输出如下:
^{pr2}$我会使用熊猫的原生字符串提取方法
返回不同组的匹配项:
^{pr2}$然后我将使用},并用
^{3}$pd.isnull
将其转换为True
或{~
将其反转。从而在匹配的地方得到正确的结果,在没有匹配的地方得到错误的结果。在然后将其分配给数据帧
现在我们可以简单地将列相加:
但是等等,我们并不是只在
SAMPLE == 1
的地方这样做的我们可以很容易地使用面具:
如果您想让它为每个样本计数,可以使用
groupby
函数:TLDR
这样做:
^{8}$相关问题 更多 >
编程相关推荐