根据列中设置的截止值提取特定行

2024-03-28 16:12:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个制表符分隔的.txt文件,如下所示。在

Gene_name   A   B   C   D   E   F
Gene1      1    0   5   2   0   0
Gene2      4    45  0   0   32  1
Gene3      0    23  0   4   0   54
Gene4     12    0   6   8   7   4
Gene5     4     0   0   6   0   7
Gene6     0     6   8   0   0   5
Gene7     13    45  64  234 0   6
Gene8     11    6   0   7   7   9
Gene9      6    0   12  34  0   11
Gene10    23    4   6   7   89  0

我想提取至少有3列值大于0的行。。 我怎么用熊猫做这个?我不知道如何在.txt文件中使用条件。在

非常感谢!在


更新:在这个问题的基础上,我如何分析这种情况下的特定列。。假设我查看列A、C、E和F,然后提取至少有3列值大于5的行。在

干杯!在


Tags: 文件nametxt制表符gene列值gene1gene2
3条回答

在@MaxU解决方案的基础上,我喜欢继续将“gene_name”放入索引中,不用担心所有的索引切片:

df = pd.read_csv(tfile, delim_whitespace=True, index_col=0)
df[df.gt(0).sum(1).ge(3)]

编辑问题更新:

^{pr2}$

输出:

            A   B   C    D   E   F
Gene_name                         
Gene4      12   0   6    8   7   4
Gene7      13  45  64  234   0   6
Gene8      11   6   0    7   7   9
Gene9       6   0  12   34   0  11
Gene10     23   4   6    7  89   0

使用运算符(作为Max答案的补充):

mask = (df.iloc[:, 1:] > 0).sum(1) >= 3    
mask

0    True
1    True
2    True
3    True
4    True
5    True
6    True
7    True
8    True
9    True
dtype: bool

df[mask] 
  Gene_name   A   B   C    D   E   F
0     Gene1   1   0   5    2   0   0
1     Gene2   4  45   0    0  32   1
2     Gene3   0  23   0    4   0  54
3     Gene4  12   0   6    8   7   4
4     Gene5   4   0   0    6   0   7
5     Gene6   0   6   8    0   0   5
6     Gene7  13  45  64  234   0   6
7     Gene8  11   6   0    7   7   9
8     Gene9   6   0  12   34   0  11
9    Gene10  23   4   6    7  89   0

类似地,查询具有5个或更多正值的所有行:

^{pr2}$
df = pd.read_csv(filename, delim_whitespace=True)

In [22]: df[df.select_dtypes(['number']).gt(0).sum(axis=1).ge(3)]
Out[22]:
  Gene_name   A   B   C    D   E   F
0     Gene1   1   0   5    2   0   0
1     Gene2   4  45   0    0  32   1
2     Gene3   0  23   0    4   0  54
3     Gene4  12   0   6    8   7   4
4     Gene5   4   0   0    6   0   7
5     Gene6   0   6   8    0   0   5
6     Gene7  13  45  64  234   0   6
7     Gene8  11   6   0    7   7   9
8     Gene9   6   0  12   34   0  11
9    Gene10  23   4   6    7  89   0

一些解释:

^{pr2}$

相关问题 更多 >