我有一个包含数千个条目的 csv 文件,这些条目需要分成几组。在下面的示例中,我需要根据河流名称将每一行分成组,以便稍后我可以根据它们的组重新格式化信息。
River Name, Branch, Length
Catnip, 1, 2145.30
Peterson, 2, 24.5
Catnip, 3, 15.4
Fergerson, 1, 5.2
Catnip, 1, 88.56
Peterson, 2, 6.45
我能想到的对信息进行分组的唯一方法是:
猫薄荷.csv。
我不认为这是解决此问题的一种有效方法,因为它为我提供了大约 1500 个需要打开和写入的 csv,但我对 python 知识的了解有限。如果有人可以提供更好的方法,将不胜感激。
最佳答案
您也可以简单地使用 csv
模块并将结果保存到字典中。我列举了读者跳过第一行(我相信一定有更简单的方法......)。然后我读取每一行并将值分配给 river
, branch
和 length
.如果河流不在字典中,则使用空列表对其进行初始化。然后它附加 branch
的元组对和 length
到字典。
rivers = {}
with open('rivers.csv', mode='rU') as f:
reader = csv.reader(f, delimiter=',') # dialect=csv.excel_tab?
for n, row in enumerate(reader):
if not n:
# Skip header row (n = 0).
continue
river, branch, length = row
if river not in rivers:
rivers[river] = list()
rivers[river].append((branch, length))
>>> rivers
{'Catnip': [('1', '2145.3'), ('3', '15.4'), ('1', '88.56')],
'Fergerson': [('1', '5.2')],
'Peterson': [('2', '24.5'), ('2', '6.45')]}
关于python - 使用 Python 对 csv 数据进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32985011/