【发布时间】:2018-01-08 03:59:40
【问题描述】:
我有 2 个 CSV 文件,每个文件都有数千行,我想将它们合并并输出到一个新文件 (results.csv)。 我在这里查看了其他答案,但现在需要帮助。
请注意: - 两个文件都没有标题 - 我不想使用 PANDA
文件 1 (file.csv) 包含:
041, 2017111, 50501342, 20058987, 200765893, PPP, PLUS, D, NSW
455, 2017082, 50513457, 20068678, 200476768, BBB, LONG, A, NSW
178, 2017976, 50586956, 20089765, 200886565, LLL, PLUS, D, QLD
文件 2 (file2.csv) 包含:
019, 0.000, 20150907, 20170308
041, 0.000, 20160806, 20170504
455、147.533、20140402、20170506
预期(results.csv)输出:
041, 2017111, 50501342, 20058987, 200765893, PPP, PLUS, D, NSW, 0.000, 20160806, 20170504
455, 2017082, 50513457, 20068678, 200476768, BBB, LONG, A, NSW, 147.533, 20140402, 20170506
所以当第1列相同时,代码将排序并加入。
到目前为止,我已经尝试了以下方法,但输出格式错误:
f1 = open(file.csv', 'r')
f2 = open(file2.csv', 'r')
f3 = open('results.csv', 'w')
c1 = csv.reader(f1)
c2 = csv.reader(f2)
c3 = csv.writer(f3)
file2 = list(c2)
for file1_row in c1:
row = 1
found = False
results_row = file1_row
for file2_row in file2:
x = file2_row[1:]
if file1_row[0] == file2_row[0]:
results_row.append(x)
found = True
break
row += 1
if not found:
results_row.append('Not found')
c3.writerow(results_row)
f1.close()
f2.close()
f3.close()
任何帮助将不胜感激。 谢谢
【问题讨论】:
-
你不需要使用
pandas,sqlite包含在python中。您可以使用 python 和 sqlite 在内存数据库中创建并执行连接。 -
@sKwa 我不熟悉这个所以不是很有帮助-抱歉
-
它是一个基本的数据库问题(线性代数),没有任何特殊的存储优化(数据结构),暴力是执行它的唯一方法。