所以,我希望Python使用csv读取器/写入器来获取目录中的所有CSV并将它们合并,同时过滤出包含第二列中的任何其他行的值。使用特定于列的复制过滤器将行附加到CSV
这里是我的unworking脚本:
import csv
import glob
with open('merged.csv','a') as out:
seen = set()
output = []
out_writer = csv.writer(out)
csv_files = [f for f in glob.glob('*.csv') if 'merged' not in f]
#csv_files = glob.glob('*.csv')
# I'd like to use all files including the output so that I don't
# have to rename it when reusing the script - it should dupe-filter itself!
for filename in csv_files:
with open(filename, 'rb') as ifile:
read = csv.reader(ifile, delimiter=',')
for row in read:
if row[1] not in seen:
seen.add(row[1])
if row: #was getting extra rows
output.append(row)
out_writer.writerows(output)
我觉得我必须缺少简单的东西。我的文件大小都是100MB左右,我最终希望自动执行此操作,以便不同的计算机可以共享一个合并文件进行复制检查。
要获得额外的功劳,我将如何更改此项以检查同时具有row[1]
和row[2]
共同点的行? (一旦过滤器和自我包容工作,当然...)
哎呀,如果你觉得各种万圣节疯狂的,你甚至可以让一个班轮'pd.concat([pd.DataFrame.from_csv(文件)在glob.glob文件(” * .csv“)])。drop_duplicates(cols = COLNAME_LIST).to_csv('merged.csv')' –
真棒 - 我一直在想着和熊猫一起工作,因为我其实有很多这种东西可以工作用。现在进入比等到必要并且必须翻译所有内容更有意义。这只会检查重复,如第2列,还是会丢弃任何在任何列条目上的欺骗?我真的需要查找关于熊猫的基础知识。 – Xodarap777
您可以向其传递一列您想要检查上面(参见COLNAME_LIST)中的重复项的列。它有助于在列上添加标签(可以通过将文件中的第一行作为标题名称来完成),但如果不这样做,它们只会包含数字标题。你应该注意的另一件事是索引,因为它们被自动创建为每行中的第一个值。我不确定你的csv文件是如何构建的,但希望这对你来说不是问题。 –