使用置信区间比较两个文件

时间:2014-11-16 15:28:08

标签: python

我有两个文件,每个文件有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)

但我没有找到实现它的方法,任何想法?

提前致谢。

1 个答案:

答案 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