为几个条件计算真/假值

3

我是一个初学者,正在使用pandas。

我正在寻找几位患者的基因突变。我有16种不同的情况。我已经编写了一段关于此的代码,但如何通过for循环来完成呢?我尝试查找MUT列上的变化,并将它们设置为True和False。然后尝试计算True/False的数量。我已经为4个条件完成了这个过程。

你能否提供更简单的方法,而不是重复编写16次相同的代码呢?

s1=df["MUT"]
A_T= s1.str.contains("A:T")
ATnum= A_T.value_counts(sort=True)

s2=df["MUT"]
A_G=s2.str.contains("A:G")
AGnum=A_G.value_counts(sort=True)

s3=df["MUT"]
A_C=s3.str.contains("A:C")
ACnum=A_C.value_counts(sort=True)

s4=df["MUT"]
A__=s4.str.contains("A:-")
A_num=A__.value_counts(sort=True)

你为什么不直接使用 df["MUT"].value_counts() 呢? - EdChum
2个回答

1

只需使用value_counts,这将为您的列提供所有唯一值的计数,无需创建16个变量:

In [5]:
df = pd.DataFrame({'MUT':np.random.randint(0,16,100)})
df['MUT'].value_counts()

Out[5]:
6     11
14    10
13     9
12     9
1      8
9      7
15     6
11     6
8      5
5      5
3      5
2      5
10     4
4      4
7      3
0      3
dtype: int64

1

我不是Pandas的专家,所以不知道是否有更简洁的方法来做到这一点,但也许以下方法可以行得通?

chars = 'TGC-'
nums = {}

for char in chars:
    s = df["MUT"]
    A = s.str.contains("A:" + char)
    num = A.value_counts(sort=True)
    nums[char] = num

ATnum = nums['T']
AGnum = nums['G']
# ...etc

基本上,遍历每个唯一的字符(T、G、C、-),然后提取所需的值,最后将数字放入字典中。然后,一旦循环完成,您可以从字典中获取所需的任何数字。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接