我正在编写一个脚本,根据每个文件中两个特定列的内容来查找大型csv文件之间的交集,这两个列分别是:Query ID和Subject ID
对于每个物种,一组文件是左右成对的,每个文件看起来如下:
Similarity (%) Query ID Subject ID
100.000000 BRADI5G01462.1_1 BRADI5G16060.1_36
90.000000 BRADI5G02480.1_5 NCRNA_11838_6689
100.000000 BRADI5G06067.1_8 NCRNA_32597_1525
90.000000 BRADI5G08380.1_12 NCRNA_32405_1776
100.000000 BRADI5G09460.2_17 BRADI5G16060.1_36
90.909091 BRADI5G10680.1_20 NCRNA_2505_6156
右边的文件总是比左边的文件长且大!!在
以下是我目前掌握的代码片段:
^{pr2}$上面的代码模拟迭代两个文件的记录,搜索第(1)行、第一个文件的第(2)行、第二个文件的第(2)行的内容,即按列(比较两个文件中的查询ID和主题ID),并按一定的顺序在新文件上打印匹配项。在
结果并不完全是我所期望的;显然它只找到第一个想要的列的匹配项。。。我试图手动追溯过程,发现BRADI5G02480.1_5
在两个文件中都存在,但不存在{
它们不应该是数字反射吗?!在
我使用了this线程来编写脚本,但是它逐行比较,并且不检查列内容的其余部分是否匹配。在
另外,我找到了this,但它使用的字典和列表不适合我的文件大小。在
为了处理模拟迭代的事情,我使用了this线程,但是这里提到的关于处理可变大小文件的内容我并不清楚,所以我还没有尝试过!!在
如果有人能告诉我这里缺少什么,代码是正确的还是我使用的in
条件错误,我将非常感激?!在
拜托,我真的需要帮助。。。提前感谢:)
下面的解决方案是我对你的另一个问题的回答的副本,希望能让你知道如何将它与你当前的解决方案相结合。在
该脚本在中读取两个(或更多)CSV文件,并将行条目的交集写入新的CSV文件。我的意思是,如果
input1.csv
中的row1在input2.csv
中的任何地方找到,则该行将写入输出,依此类推。在您需要添加文件名mangling。这种格式使测试更容易。使用Python2.7进行了测试。在
相关问题 更多 >
编程相关推荐