Наличие данных, содержащих родительские и дочерние записи в одном текстовом файле (два заголовка). Родитель - department
, дочерние элементы - employees
, а dno
- столбец соединения.
dno,dname,loc
10,FIN,USA
20,HR,EUR
30,SEC,AUS
empno,ename,sal,dno
2100,AMY,1001,10
2200,JENNY,2001,10
3100,RINI,3001,20
4100,EMP4,4001,30
4200,EMP5,5001,30
4300,EMP6,6001,30
Хотел бы объединить оба данных по dno
и создать вывод, как показано ниже:
empno,ename,sal,dno,dname,loc
2100,AMY,1001,10,FIN,USA
2200,JENNY,2001,10,FIN,USA
3100,RINI,3001,20,HR,EUR
4100,EMP4,4001,30,SEC,AUS
4200,EMP5,5001,30,SEC,AUS
4300,EMP6,6001,30,SEC,AUS
Python version - 2.6
Пробовали следующее решение:
dept_lst = []
emp_lst = []
with open(efile,'rb') as e_file:
reader = csv.reader(e_file,delimiter=",")
for row in reader:
if ((row[0] != 'dno' and row[0] != 'dname' ) or
(row[0] != 'empno' and row[0] != 'ename')):
if len(row) == 3:
dept_lst.append(row)
elif len(row) == 4:
emp_lst.append(row)
result = [ e + [d[1],d[2]] for e in emp_lst for d in dept_lst if e[3] == d[0]]
for line in result:
print ",".join(line)
Вопрос: Исходные данные имеют размер более 1 ГБ, и, похоже, это работает. Не уверен, что это оптимальное решение.
Хотелось бы знать, есть ли другие эффективные способы / альтернативы обработки этого сценария с использованием Python Standard Library - 2.6
.