Python 是否在不同的文本文件中检查相同的列值?

Python 是否在不同的文本文件中检查相同的列值?,python,Python,假设我有两个文本文件,每个文件有两列: text1.txt text2.txt col1 col2 col1 col2 1 9 3 6 2 8 4 7 3 7 5 8 4 6 6 9 现在我想读入这两个文件,并检查col1中是否有相同的值。然后我想创建一个包含三列的新文本文件:第一列具有相同的值,另外两列具有每个文件的相应值co

假设我有两个文本文件,每个文件有两列:

text1.txt text2.txt
col1 col2 col1 col2
1      9            3      6
2      8            4      7
3      7            5      8
4      6            6      9
现在我想读入这两个文件,并检查
col1
中是否有相同的值。然后我想创建一个包含三列的新文本文件:第一列具有相同的值,另外两列具有每个文件的相应值
col2
。因此,对于上面的示例,新文本文件应如下所示:

new_text.txt


col1 col2 col3
3      7      6     
4      6      7                               
因为3和4都出现在两个文件的
col1
中。 什么是有效的方法

f1=open(file1,"r")
f2=open(file2,"r")

lines1=f1.readlines()
lines2=f2.readlines()

text1=[[]]
text2=[[]]

for x in lines1:
   text1.append(x.split(' ')[0],x.split(' ')[1]) // replace ' ' with the seperator between columns 
for x in lines2:
   text2.append(x.split(' ')[0],x.split(' ')[1]) // replace ' ' with the seperator 
f.close()
然后在每个2d列表上循环,根据需要生成第三个包含col1值的列表,以及包含文本文件1和2的col2对应值的col2/col3

然后根据需要在每个2d列表上循环生成第三个列表,其中包含col1值,col2/col3包含python3中文本文件1和2的对应col2

with open('text3.txt', 'w') as file3:
    print('col1\tcol2\tcol3', file=file3)
    with open('text1.txt', 'r') as f:
        file1 = f.readlines()
    with open('text2.txt', 'r') as f:
        file2 = f.readlines()
    for i in file1[1:]:
        line1 = i.split()
        for j in file2[1:]:
            line2 = j.split()
            if line1[0] == line2[0]:
                row = line1[0] + '\t' + line1[1] + '\t' + line2[1]
                print(row, file=file3)
使操作正常工作的一种简单方法是以嵌套方式迭代两个文件,并搜索第一个文件中的
col1
等于第二个文件中的
col1
的实例

我强烈建议你试试这个包装。通过使用pandas的简单内部功能,可以轻松完成所需的操作

例如:

import pandas as pd

df1 = pd.read_csv('text1.txt', delim_whitespace=True)
df2 = pd.read_csv('text2.txt', delim_whitespace=True)
df3 = pd.merge(df1, df2, on='col1', how='inner')
df3.to_csv('text3.txt', index=False, sep=" ")
在python3中

with open('text3.txt', 'w') as file3:
    print('col1\tcol2\tcol3', file=file3)
    with open('text1.txt', 'r') as f:
        file1 = f.readlines()
    with open('text2.txt', 'r') as f:
        file2 = f.readlines()
    for i in file1[1:]:
        line1 = i.split()
        for j in file2[1:]:
            line2 = j.split()
            if line1[0] == line2[0]:
                row = line1[0] + '\t' + line1[1] + '\t' + line2[1]
                print(row, file=file3)
使操作正常工作的一种简单方法是以嵌套方式迭代两个文件,并搜索第一个文件中的
col1
等于第二个文件中的
col1
的实例

我强烈建议你试试这个包装。通过使用pandas的简单内部功能,可以轻松完成所需的操作

例如:

import pandas as pd

df1 = pd.read_csv('text1.txt', delim_whitespace=True)
df2 = pd.read_csv('text2.txt', delim_whitespace=True)
df3 = pd.merge(df1, df2, on='col1', how='inner')
df3.to_csv('text3.txt', index=False, sep=" ")

到目前为止,您尝试了什么方法?什么是分隔列、空格或制表符?@crumb还没什么,只是开始考虑。我想读入文件,将行连接到一个新列表中,并在这个列表中搜索相同的值,但这对我来说似乎并不有效@我想是空间分开了吧?因为我是通过
np.savetxt()
保存相应的二维列表来创建文本文件的。我不知道它选择了什么作为一个分离。我该怎么查呢?对不起,我对这一切都不熟悉。但是我可以通过
np.loadtxt()
读取这些文件,这给了我相应的二维列表。到目前为止,您尝试了什么方法?是什么分隔列、空格还是制表符?@crumb还没什么,只是开始考虑一下。我想读入文件,将行连接到一个新列表中,并在这个列表中搜索相同的值,但这对我来说似乎并不有效@我想是空间分开了吧?因为我是通过
np.savetxt()
保存相应的二维列表来创建文本文件的。我不知道它选择了什么作为一个分离。我该怎么查呢?对不起,我对这一切都不熟悉。但是我可以通过
np.loadtxt()
读取文件,它会给我相应的二维列表。谢谢!那么,它如何与连接函数一起工作呢?我在post中添加了一个内部连接示例。merge()函数非常有用!谢谢那么,它如何与连接函数一起工作呢?我在post中添加了一个内部连接示例。merge()函数非常有用!谢谢我要强调的是,我可以通过
np.loadtxt(text1.txt)
轻松获得文本文件的二维列表。因此,我想创建二维列表的
readlines()
append()
似乎没有必要?谢谢!我要强调的是,我可以通过
np.loadtxt(text1.txt)
轻松获得文本文件的二维列表。因此,我想创建二维列表的
readlines()
append()
似乎没有必要?