Я бы посоветовал вам взглянуть на этап создания вашего объединенного набора данных.
При объединении наборов данных вы можете сделать это по нескольким индексам, т. Е.
df = pd.merge(left, right, how='outer', on=['Name', 'Unit', 'Level'], suffixes=['', '_r'])
С помощью внешнего объединения вы сразу же собираете все наборы данных и удаляете дубликаты. Осталось только объединить столбец Year, который вы можете сделать следующим образом:
df['Year'] = df[['Year', 'Year_r']].apply(lambda x: x['Year'] if (x['Year'] is not np.nan and x['Year'] != '') else x['Year_r'], axis=1)
Это заполнит пробелы, после чего вы сможете просто удалить столбец Year_r.
Преимущество заключается в том, что охватываются не только значения NaN пропущенных лет, но и пропущенные годы, которые представлены в виде пустых строк.
После небольшого рабочего примера:
import pandas as pd
import numpy as np
left = pd.DataFrame({'Name': ['Adam', 'Beatrice', 'Crissy', 'Dumbo', 'Peter', 'Adam'],
'Unit': ['2', '4', '6', '2', '4', '12'],
'Year': ['', '2009', '1954', '2025', '2012', '2024'],
'Level': ['L1', 'L1', 'L0', 'L4', 'L3', 'L10']})
right = pd.DataFrame({'Name': ['Adam', 'Beatrice', 'Crissy', 'Dumbo'],
'Unit': ['2', '4', '6', '2'],
'Year': ['2010', '2009', '1954', '2025'],
'Level': ['L1', 'L1', 'L0', 'L4']})
df = pd.merge(left, right, how='outer', on=['Name', 'Unit', 'Level'], suffixes=['', '_r'])
df['Year'] = df[['Year', 'Year_r']].apply(lambda x: x['Year'] if (x['Year'] is not np.nan and x['Year'] != '') else x['Year_r'], axis=1)
df
Вы могли бы получить некоторое представление от недавнего потока "проекты PLT, ожидающие участников? в списке рассылки Схемы PLT.
В особенности смотрите на сообщение Flatt:
http://list.cs.brown.edu/pipermail/plt-scheme/2009-January/029585.html
Мы могли пользоваться некоторыми библиотеками файла изображения:
чтение файлов GIF (у нас уже есть библиотека для записи),
чтение и запись файлов BMP
чтение и запись файлов XPM & XBM
Все они форматируют, в настоящее время встраиваются в MrEd с помощью C код, но код ужасен, и мы хотели бы избавиться от него. Кроме того, эти форматы изображения довольно просты.
Как насчет веб-сервера продолжения. Smalltalk уже имеет один (Побережье), и Схема PLT имеет один в, он - дистрибутив, но я думаю, что это был бы хороший всесторонний проект попробовать, поскольку это покрывает сети, многопоточность, ввод-вывод, пользовательская расширяемость и т.д. и т.д.
Существует интересная статья здесь, которая могла бы запустить Вас.
Удачи!!!
Курс 6.001 в MIT ведется по LISP, попробуйте некоторые присвоения лаборатории.
Если у Вас есть основательная Схема под Вашим поясом, и Вы хотите понять то, что происходит, когда компилятор делает генерацию кода, следует этому учебному руководству. Существуют связанные ресурсы в домашней странице автора.
Остерегайтесь: бумага, учебное руководство и тестовые сценарии действительно не совсем выстраиваются в линию. Необходимо сохранить остроумие о Вас и понять вещи немного для себя. В частности, следуйте учебному руководству до лямбд, затем следуйте за бумагой для labels/code/labelcall, затем обратно к учебному руководству для выделения "кучи", затем обратно бумаге для продолжений и вперед к следующим шагам. (Извините, что сделал, это усложнило, но это - маршрут, который работал на меня.)