【发布时间】:2020-07-25 11:36:11
【问题描述】:
我想将几个 csv 文件(分隔符“;”)合并到一个目录中,并将它们与另一个“;”一起输出到一个 csv 文件中分隔符或带有“,”。所有 csv 文件都具有相同数量的标头(标头必须保留),并且在所有 csv 文件中它们的名称相同。但他们的内容可能有我想要删除的重复内容。
文件的大小最大为 20 MB。
文件以相同的名称开头,但结尾不同(其中 * 替换它们)
import csv
import glob
import pandas
stock_files = sorted(glob(r'C:\Users\urale\Desktop\logs\pc_dblatmonstat_*_*.log'))
print(stock_files)
files = [stock_files]
final_headers = [
'Start Time',
'epoch',
'Host Name',
'Db Alias',
'Database',
'Db Host',
'Db Host IP',
'IP Port',
'Latency (us)'
]
merged_rows = set()
for f in files:
with open(f, 'rb') as csv_in:
csvreader = csv.reader(csv_in, delimiter=';')
headers = dict((h, i) for i, h in enumerate(csvreader.next()))
for row in csvreader:
merged_rows.add(tuple(row[headers[x]] for x in final_headers))
with open('output.csv', 'wb') as csv_out:
csvwriter = csv.writer(csv_out, delimiter=',')
csvwriter.writerows(merged_rows)
但是我遇到了一个错误
Line6: Exception has occurred: TypeError
'module' object is not callable
请问我的代码是否反映了我的请求以及为什么会出错?
【问题讨论】:
-
熊猫读取 csv 会有所帮助;但是,有关您的数据的更多信息。哪些列/列有您要删除的重复项?你知道那些专栏吗?
-
将第二行改为
from glob import glob。但这不会是最后一个例外...... -
@sammywemmy 我认为每个列出的列中的相同条目可能会出现不止一次。我必须将合并后的 csv 导入到 SQL 表中,这就是我要消除冗余条目的原因。
-
@LydiavanDyke 谢谢。更近了一步。现在我收到另一个错误:第 25 行:预期的 str、字节或 os.PathLike 对象,而不是列表