gpt4 book ai didi

python - 基于多列过滤文本文件

转载 作者:太空宇宙 更新时间:2023-11-03 19:02:47 26 4
gpt4 key购买 nike

我遇到了一个在正常编程意义上微不足道的问题,但我想找到另一个解决方案,如果可能的话,使用一些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 列的数字最大,我想删除所有其他带有“_”的数字,只保留带有“_”的数字得分更高。

P.S:对于第 4 列的每个值,我想保留得分最高的那个。例如,在这种情况下,这些值将保留,这不是全部比较,而是每对或三元组都有“_0”应单独比较“_1”“_2”以获得最高分:

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

有没有办法在不循环太多的情况下做到这一点?

最佳答案

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

输出:

('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)

关于python - 基于多列过滤文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15613066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com