【发布时间】:2021-05-23 02:15:15
【问题描述】:
我是初学者,正在寻找解决方案。我正在尝试比较两个没有标题的 CSV 文件中的列。第一个有一列,第二个有两列。
File_1.csv:#包含 2k 行随机数。
1
4
1005
.
.
.
9563
File_2.csv:#包含 28k 行
0 [81,213,574,697,766,1074,...21622]
1 [0,1,4,10,12,13,1005, ...31042]
2 [35,103,85,1023,...]
3 [4,24,108,76,...]
4 []
.
.
.
28280 [0,1,9,10,32,49,56,...]
我想先将 File_1 的列与 File_2 的第一列进行比较,看看它们是否匹配并将匹配值加上 file2 的第二列提取到一个新的 CSV 文件 (output.csv) 删除不匹配的值。例如,
输出.csv:
1 [0,1,4,10,12,13,1005, ...31042]
4 []
.
.
.
其次,我想将 File_1.csv 列(迭代 2k 行)与 output.csv 的第二列(每个数组)进行比较并找到匹配项值并删除那些不匹配的值,我想将这些匹配值保存到 output.csv 文件中,并保留该文件的第一列。例如,4 被删除,因为它在第二列(数组)中没有任何值,因为没有数字可与 File_1 进行比较,但还有其他类似 1 的值确实有一些匹配"
输出.csv:
1 [1,4,1005]
.
.
.
我找到了适用于第一步的代码,但它不保存第二列。我一直在研究如何比较数组,但我没能做到。 这是我目前所拥有的,
import csv
nodelist = []
node_matches = []
with open('File_1.csv', 'r') as f_rand_node:
csv_f = csv.reader(f_rand_node)
for row in csv_f:
nodelist.append(row[0])
set_node = set(nodelist)
with open('File_2.csv', 'r') as f_tbl:
with open('output.csv', 'w') as f_out:
csv_f = csv.reader(f_tbl)
for row in csv_f:
set_row = set(' '.join(row).split(' '))
if set_row.intersection(set_node):
node_match = list(set_row.intersection(set_node))[0]
f_out.write(node_match + '\n')
感谢您的帮助。
【问题讨论】: