为了账号安全,请及时绑定邮箱和手机立即绑定

使用python中的重复项对csv文件进行条件过滤

使用python中的重复项对csv文件进行条件过滤

梵蒂冈之花 2021-03-29 21:10:23
我是python的新手,并且需要以下建议。我有一个包含多个字段的文件,例如下面的示例# with duplicatesname1 14019 3 0.5564 0.0929 0.6494name1 14022 0 0.5557 0.0990 0.6547name1 14016 0 0.5511 0.0984 0.6495name2 11 8 0.5119 0.0938 0.6057name2 12 18 0.5331 0.0876 0.6206name3 16 20 0.5172 0.0875 0.6047name3 17 29 0.5441 0.0657 0.6098# without duplicatesname1 14022 0 0.5557 0.0990 0.6547name2 12 18 0.5331 0.0876 0.6206name3 17 29 0.5441 0.0657 0.6098首先是名称,其他字段是数字(根据预测)。有相同名称但有不同预测的预测重复项。我的任务是根据最后一个字段的比较删除重复项。最后一列应为MAXIMUM。我正在堆叠比较重复项的最后一个字段的步骤。我应该使用lambda还是可以进行直接过滤?列表是否正确使用,或者在从文件中逐行读取时可以在流程中执行?您对我们的帮助深表感谢!import csvfi = open("filein.txt", "rb")fo = open("fileout.txt", "wb")reader = csv.reader(fi,delimiter=' ')writer = csv.writer(fo,delimiter=' ')names = set()datum = []datum2 = []for row in reader:  if row[0] not in names:    names.add(row[0])    row_new1 = [row[0],row[3],row[4],row[5]]    datum.append(row_new)    writer1.writerow(row_new1)  else:    row_new2 = [row[0],row[3],row[4],row[5]]    datum2.append(row_new2)    writer2.writerow(row_new2)
查看完整描述

1 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

下面的代码可能有一定用处,我是用字典来做的:


import csv


fi = open("filein.txt", "rb")

reader = csv.reader(fi,delimiter=' ')


dict = {}

for row in reader:

    if row[0] in dict:

        if float(dict[row[0]][-1]) < float(row[-1]):

            dict[row[0]] = row[1:]

    else:

        dict[row[0]] = row[1:]

print dict

输出:


{'name2': ['12', '18', '0.5331', '0.0876', '0.6206'], 'name3': ['17', '29', '0.5441', '0.0657', '0.6098'], 'name1': ['14022', '0', '0.5557', '0.0990', '0.6547']}



查看完整回答
反对 回复 2021-04-01
  • 1 回答
  • 0 关注
  • 274 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信