Проверьте, находится ли значение в кадре данных pandas в пределах любых двух значений двух других столбцов в другом кадрPython

Программы на Python
Ответить
Anonymous
 Проверьте, находится ли значение в кадре данных pandas в пределах любых двух значений двух других столбцов в другом кадр

Сообщение Anonymous »

У меня есть два кадра данных разной длины.
dfSamples (63012375 строк) и
dfFixations (200000 строк).

Код: Выделить всё

dfSamples = pd.DataFrame({'tSample':[4, 6, 8, 10, 12, 14]})
dfFixations = pd.DataFrame({'tStart':[4,12],'tEnd':[8,14]})
Я хотел бы проверить каждое значение в dfSamples, находится ли оно в любых двух диапазонах, заданных в dfFixations, а затем присвоить этому значению метку. Я нашел это: проверьте, находится ли значение в кадре данных между двумя значениями в другом кадре данных, но решение цикла ужасно медленное, и я не могу заставить работать какое-либо другое решение.
Рабочий (но очень медленный) пример:

Код: Выделить всё

labels = np.empty_like(dfSamples['tSample']).astype(np.chararray)
for i, fixation in dfFix.iterrows():
log_range = dfSamples['tSample'].between(fixation['tStart'], fixation['tEnd'])
labels[log_range] = 'fixation'
labels[labels != 'fixation'] = 'no_fixation'
dfSamples['labels'] = labels
Следуя этому примеру: производительность применения Pandas по сравнению с np.vectorize для создания нового столбца из существующих столбцов. Я пытался векторизовать это, но безуспешно.

Код: Выделить всё

def check_range(samples, tstart, tend):
log_range = (samples > tstart) & (samples < tend)
return log_range
fixations = list(map(check_range, dfSamples['tSample'], dfFix['tStart'], dfFix['tEnd']))
Будем благодарны за любую помощь!

Подробнее здесь: https://stackoverflow.com/questions/698 ... er-columns
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»