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()
似乎没有必要?