проблема внедрения excel vlookup в пандах

Я перехожу от EXCEL к python, и после прочтения на разных сайтах, блогах, учебниках я подумал, что спрошу, что является самым простым и / или самым быстрым способом сделать следующее? (Я планирую искать и обрабатывать около 1 миллиона записей.)

Я пытаюсь реплицировать MSExcel VLoopup, который выполняет следующие действия: 1. Сначала я начинаю с таблицы A с индексом времени («com_indx») с шагом в одну минуту и ​​другим полем, полученным из одноминутного индекса, который дает индекс времени округляется до предыдущего часа («hr_indx»). Я загрузил таблицу A в кадр данных Pandas с индексом = один минута, и каждая строка содержит округленное значение часа. 2. У меня есть другая таблица B с индексом времени с шагом в один час. 3. Я хочу скопировать каждую строку B в A, когда таблица A 'hr_indx' соответствует таблице B 'com_indx'.

К сожалению, мне это очень трудно сделать в Пандах. Любая помощь в том, как это сделать, будет очень оценена. Следующим является то, с чем я работаю:

Таблица A: com_indx hr_indx ColA1 11/2/2003 23:59 11/2/2003 23:00 3237.50 11/3/2003 0:00 11/3/2003 0:00 3237.50 11/3/2003 0:01 11 / 3/2003 0:00 3237.50 11/3/2003 0:02 11/3/2003 0:00 3237.50 11/3/2003 0:03 11/3/2003 0:00 3237.50 11/3/2003 0:04 11 / 3/2003 0:00 3237.50 11/3/2003 0:05 11/3/2003 0:00 3212.50

Таблица B: com_indx ColB1 11/2/2003 23:00 973 11/3/2003 0:00 973,25 11/3/2003 1:00 973,5 11/3/2003 2:00 975,75

То, что я хотел бы видеть, – это кадр данных Pandas, который затем содержит следующее:

Электронная таблица C: com_indx hr_indx ColA1 validation_hr_indx CopiedColB1 11/2/2003 23:59 11/2/2003 23:00 3237.50 11/2/2003 23:00 973 11/3/2003 0:00 11/3/2003 0:00 3237.50 11/3/2003 0:00 973,25 11/3/2003 0:01 11/3/2003 0:00 3237.50 11/3/2003 0:00 973,25 11/3/2003 0:02 11/3/2003 0 : 00 3237.50 11/3/2003 0:00 973,25 11/3/2003 0:03 11/3/2003 0:00 3237,50 11/3/2003 0:00 973,25 11/3/2003 0:04 11/3 / 2003 0:00 3237.50 11/3/2003 0:00 973,25 11/3/2003 0:05 11/3/2003 0:00 3212.50 11/3/2003 0:00 973,25

Ниже приведен фрагмент кода (обратите внимание, что я только распечатывал результаты, а не пытался создать таблицу C):

start_date='2003-10-03' end_date='2003-11-04' oneMinDates=pd.date_range(start_date, end_date, freq='1min') #Returns a list of datetime objects dt1=np.dtype('datetime64[s]') A1 = np.zeros((oneMinDates.size), dtype=dt1) for selDate in enumerate(oneMinDates): A1[selDate[0]]=datetime(selDate[1].year, selDate[1].month, selDate[1].day, selDate[1].hour) for i, selDate in enumerate(oneMinDates): #i in 0 to (oneMinDates.size-1): reformattedDate = pd.to_datetime(A1[i]) dfOneMinDates = pd.DataFrame(data=A1, index=oneMinDates,columns=['com_indx']) dfLowestTF = pd.read_csv("data/SpreadsheetA.csv", index_col="com_indx",parse_dates=True,na_values=['nan']) df1=dfOneMinDates.join(dfLowestTF,how='inner') dfHigherInputsTFs = pd.read_csv("data/SpreadsheetB.csv", index_col="com_indx",parse_dates=True) df1['validation_hr_indx'] = df1.com_indx.map(df1.hr_indx) print(df1) 

Ниже приводится мой вывод: программа запущена. com_indx hr_indx ColA1 \ 2003-11-02 23:59:00 2003-11-02 23:00:00 11/2/2003 23:00 3237,5
2003-11-03 00:00:00 2003-11-03 00:00:00 11/3/2003 0:00 3237,5
2003-11-03 00:01:00 2003-11-03 00:00:00 11/3/2003 0:00 3237,5
2003-11-03 00:02:00 2003-11-03 00:00:00 11/3/2003 0:00 3237,5
2003-11-03 00:03:00 2003-11-03 00:00:00 11/3/2003 0:00 3237,5
2003-11-03 00:04:00 2003-11-03 00:00:00 11/3/2003 0:00 3237,5
2003-11-03 00:05:00 2003-11-03 00:00:00 11/3/2003 0:00 3212,5

  validation_hr_indx 

2003-11-02 23:59:00 NaN
2003-11-03 00:00:00 11/3/2003 0:00
2003-11-03 00:01:00 11/3/2003 0:00
2003-11-03 00:02:00 11/3/2003 0:00
2003-11-03 00:03:00 11/3/2003 0:00
2003-11-03 00:04:00 11/3/2003 0:00
2003-11-03 00:05:00 11/3/2003 0:00
Программа завершена.

Благодаря 🙂

Interesting Posts

Excel VBA: вставить ввод пользователя в столбце месяца, который определяется пользователем

Сохранение активной рабочей книги при использовании макроса из надстройки

Использование SUMIFS для добавления продолжительности времени всегда дает 00:00:00

Де-стекирование столбцов в Excel с помощью VBA

Как создать кнопку ActiveX и добавить к ней код (скажите, какой подпрограммой для запуска) с помощью vba?

Запустите макрос VBA против листа Excel с помощью C #

VBA: форматирование нескольких выбранных графиков (диаграмма, сюжет, легенда и т. Д.)

Как выполнить подсчет строк в VBA, чтобы узнать, нужно ли мне сбрасывать расчет?

Используйте VBA для вставки большого XML-файла в другой

Создание тестовых данных в Excel для таблицы EAV

Функция VBA в запросе Excel ADODB

Как составить сводную таблицу объединить данные из нескольких листов?

Как считать нет. ячеек в MS Excell в зависимости от цвета заливки

Как попасть в электронную таблицу Excel, когда она рушится при ее открытии из-за неправильного кода VBA

Попытка написать файл excel с POI Apache, вызывающий OutOfMemoryError

Давайте будем гением компьютера.