基于多列筛选文本文件

2024-06-16 13:18:38 发布

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

我有一个普通编程意义上很小的问题,但是如果可能的话,我想用一些python技巧来找到另一个解决方案。在

我有一个文本文件如下:

A1 1 5 g1_0 10
A1 6 8 g2_0 13
A1 9 12 g3 18
A1 15 24 g4 2
A1 25 27 g5 5
A1 30 33 g1_1 20
A1 44 67 g10 19
A1 69 77 g9 19
A1 80 99 g6 19
A1 153 166 g2_1 19

我要做的是按以下方式过滤文本文件: 当第4列中有“0”或“_1”或“_2”时,我想检查第5列。如果第5列的数字最高,我想删除所有其他带“u”的数字,只保留得分较高的那一个。在

附言:我想保留第4栏中每个值中得分最高的那个。e、 g在这种情况下,这些值将保持不变,这不是一个全对所有比较,但每对或三元组中有“_0”、“u 1”、“u 2”应单独进行比较,以获得最高分数:

^{pr2}$

有没有什么方法可以避免很多循环呢?在


Tags: 技巧a1编程数字解决方案意义文本文件g4
1条回答
网友
1楼 · 发布于 2024-06-16 13:18:38
import numpy as np
nk=np.genfromtxt('input.txt', dtype=None)
result1={}
for x in nk:
    result1.setdefault(x[3].split('_')[0],[]).append(x[4])
for x in nk:
    if x[4]==max(result1[x[3].split('_')[0]]):print x

输出:

^{pr2}$

相关问题 更多 >