У меня уже есть фрейм данных, и мне нужно выполнять вычисления для каждого индекса относительно всех предыдущих индексов (таким образом, для 187 показателей имеется 17766 вычислений). Это должно быть эффективным, чтобы масштабировать до миллионов вычислений.
#this is the original dataframe
df = pd.DataFrame(np.random.rand(187,2))
#this is the dataframe to write to
df2 = pd.DataFrame()
#blank list to write to
ind_diff = []
Метод 1: Список
for n in range(0, len(df)):
for i in range(n + 1, len(df)):
ind_diff.append(df.index[i] - df.index[n])
Метод 2: добавление кадра данных
for n in range(0, len(df)):
for i in range(n + 1, len(df)):
df2 = df2.append(df.Index[i] - df.Index[n])
Метод # 1 возвращает только окончательный расчет как вывод, то есть список длины 1. Почему это так?
Метод № 2 работает, но он слишком медленный. Я знаю, что это не рекомендуемый способ создания фрейма данных (согласно документации и что pd.concat
более эффективен), но я ищу самый быстрый подход. Заранее спасибо