У меня есть два dataframes, (10,2) и (4,2), и я ищу более быстрый/более простой способ сравнить их по строкам подряд.pandas построить матрицу сравнения строк за строкой
x = pd.DataFrame([range(10),range(2,12)])
x = x.transpose()
y = pd.DataFrame([[5,8],[2,3],[5,5]])
Я хотел бы построить матрицу сравнения (10,3), который показывает, какие строки в первом dataframe соответствовать следующим требованиям во втором dataframe. значение x 1 должно быть> = значение y [0], а значение x [0] должно быть < = значение y 1. На самом деле данные являются датами, но для простоты я просто использовал целые числа, чтобы упростить этот пример. Мы тестируем перекрытие в периоды времени, поэтому логика показывает, что в периоды соответствующих таблиц должно быть некоторое перекрытие.
arr = np.zeros((len(x),len(y)), dtype=bool)
for xrow in x.index:
for yrow in y.index:
if x.loc[xrow,1] >= y.loc[yrow,0] and x.loc[xrow,0] <= y.loc[yrow,1]:
arr[xrow,yrow] = True
arr
грубой силы подход выше является слишком медленным. Любые предложения о том, как я мог бы векторизовать это или сделать какие-то сопоставленные сопоставления матриц?
Perfect - я знал, что есть какой-то способ использовать вещание, мне придется сделать небольшое исследование, чтобы понять, как вы» они сочетаются, но это прекрасно работает. Благодаря! – flyingmeatball
@flyingmeatball Вещание - лучшая вещь, которая произошла с NumPy, если вы спросите меня :) Итак, исследуйте! – Divakar
Быстрое отключение в сторону, как вы отформатируете свой вывод из ноутбука ipython так хорошо, чтобы вписаться в ответ SO? Мне всегда нужно навсегда форматировать мою до публикации. – flyingmeatball