Python2.7CSV:如何基于值删除重复行
我有一个csv文件,格式如下:Python2.7CSV:如何基于值删除重复行,python,csv,Python,Csv,我有一个csv文件,格式如下: name, id, date, score chris, 55, 5/22/2014, 70 pete, 56, 5/22/2014, 100 chris, 55, 5/22/2014, 100 我尝试按名称排序,然后找到重复条目并删除分数最低的重复条目。我已经完成了分类,其余的我都被卡住了 排序代码: import csv sortedlist = None with open('my_file.csv', 'r') as zfile: sorte
name, id, date, score
chris, 55, 5/22/2014, 70
pete, 56, 5/22/2014, 100
chris, 55, 5/22/2014, 100
我尝试按名称排序,然后找到重复条目并删除分数最低的重复条目。我已经完成了分类,其余的我都被卡住了
排序代码:
import csv
sortedlist = None
with open('my_file.csv', 'r') as zfile:
sortedlist = sorted(zfile, key=operator.itemgetter(0), reverse=False)
for line in sortedlist:
line = line.rstrip()
print line
以下是您想要的(使用功能样式):
输出:
$ python -i foo.py
{' 55': ['chris', ' 55', ' 5/22/2014', ' 100'],
' 56': ['pete', ' 56', ' 5/22/2014', ' 100']}
>>>
按名称对此输出进行排序很容易:
>>> pprint(sorted(unique_rows.values(), key=itemgetter(0)))
[['chris', ' 55', ' 5/22/2014', ' 100'], ['pete', ' 56', ' 5/22/2014', ' 100']]
注:
- 使用模块读取数据,因为它是以逗号值分隔的(CSV)
- 根据
(名称)项和0th
(分数)项的键对行进行排序3rd
- 将排序顺序从最低分颠倒到最高分(您将看到原因)
- 将此映射到最低到最高分数的dict(键/值对)
这样您就得到了您想要的输出/结果。预期的输出是什么?
>>> pprint(sorted(unique_rows.values(), key=itemgetter(0)))
[['chris', ' 55', ' 5/22/2014', ' 100'], ['pete', ' 56', ' 5/22/2014', ' 100']]