2016-12-06 2 views
-3

Мне нужно иметь возможность запускать csv с повторяющимися идентификаторами и выводить идентификаторы с неизменяемыми значениями в одной строке на один идентификатор. Пытались использовать панды для чтения csv.Консолидация csv-файла с помощью python. 1 ID, несколько записей

Что у меня есть:

Id, Bin 
1, a1 
1, a2 
1, b2 
2, a4 
2, a5 
2, b4 
2, b5 

Что я хочу:

Id, Bin 
1, a1, a2, b2 
2, a4, a5, b4, b5 

ответ

1

Я полагаю, ваш входной файл называется id_input.csv.

Итак, в моем решении я буду использовать groupby от itertools модуля как в этом примере:

id_input.csv:

Id, Bin 
1, a1 
1, a2 
1, b2 
2, a4 
2, a5 
2, b4 
2, b5 

Скрипт, который будет печатать нужный результат:

from itertools import groupby 

data = list(k.replace("\n", "").strip().split(",") for k in open("id_input.csv", 'r')) 


for key, val in groupby(data, lambda x : x[0]): 
    if key != "Id": 
     print("%s, %s" %(key, ",".join(k[1] for k in list(val)))) 

Выход:

1, a1, a2, b2 
2, a4, a5, b4, b5 
Смежные вопросы