Динамический выбор элементов фрейма данных на основе внешней сгенерированной таблицы (то есть файла CSV или фрейма данных) в Python - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь определить конкретные строки в одном фрейме данных на основе строк во втором фрейме данных.Каждая строка во втором фрейме данных определяет уникальный фильтр.Критерии фильтра (какие столбцы использовать и какие значения) известны только во время выполнения и различаются.

data = pd.DataFrame({'a':[0,1,2,3],'b':[4,5,6,7],'c':[9,6,4,2]})

flt = pd.DataFrame({'a': [3,None,0],'c':[None,2,5]})

Цель состоит в том, чтобы динамически генерировать критерии поиска, которые позволяют использовать векторную обработку, такую ​​как

data[data['a']==flt['a'].iloc[0]]

data[data['c']==flt['c'].iloc[1]]

data[(data['a']==flt['a'].iloc[2]) & (data['c']==flt['c'].iloc[2])]

. Я думал о форме метапрограммирования или шаблоне, который генерировал бы кодна лету потенциально в виде строки и использовать exec.Однако кажется, что это плохой способ сделать что-то в Python?Проблема состоит в том, что «реальное» приложение использует очень большие фреймы данных, в частности, для данных, которые нужно искать O [миллионы на сотни], и комбинация столбцов, используемых для поиска, сильно варьируется.От 1 до дюжины столбцов.Также гибкость и скорость поиска имеют решающее значение.

...