我有两个文件,每个文件有3列,我需要将这些行与常见的第一列字进行比较,然后比较第二列和第三列,只接受第二列中置信区间为+2的行,并且在第三列中为-2,例如:
文件1:
n1 11 19 # 11 (within +2 confidence) 19 (-2) repect to first n1 in file 2 (10 20).
n2 20 30 # no n2 in file 2, discard.
文件2:
n1 10 20
n1 30 40 # outside confidence interval (+2 -2) respect to n1 in file 1.
输出:
n1 11 19
我想过使用"范围"函数生成间隔:
a=[1]
range(a, a+3) # +2 to second column (e.g. 10,11,12)
b=[2]
range(b, b-3, -1) # -2 to third column (e.g. 20,19,18)
但我没有找到实现它的方法,任何想法?
提前致谢。
答案 0 :(得分:0)
这有点令人满口,但通过使用Pandas,它可能更容易修改。
首先将文件1和文件2的每一列添加到pandas数据框中(如果将它们作为.txt文件,那么pd.read_csv(file_name)
会将它们读入数据框)
df = pd.DataFrame({"file1A" : [11, 20],
"file1B" : [19, 30], "file2A": [10, 30],
"file2B" : [20, 40]})
看起来像
file1A file1B file2A file2B
0 11 19 10 20
1 20 30 30 40
然后只需选择满足您要求的行:
df[(df.file2A - 2 < df.file1A) & (df.file1A < df.file2A + 2) &
(df.file2B - 2 < df.file1B) & (df.file1B < df.file2B + 2) ]
给出
file1A file1B file2A file2B
0 11 19 10 20