У меня есть пандас DataFrame с примерно 5 миллионами строк. Столбцы представляют собой своего рода формат значения ключа.
Пример: - «Время», «P1», «Q1», «P2», «Q2» .... «P20», «Q20»(всего 21 столбец) P1, P2, ... P20 могут принимать различные значения в диапазоне от 100..1000 Мне нужно создать кадр данных, в котором значения P1..P20 становятся ключами (диапазон ключей от 100..1000) и соответствующими значениямиQ1, .. Q20 должен быть каждый отдельный столбец. (Теперь у вас есть 5 миллионов столбцов)
Это похоже на транспонирование 1-го кадра данных (пропущенные значения ключа равны 0).
В настоящее время я конвертирую каждую строку в словаре с соответствующими значениями столбцов, используя df.ix [], создаю ее кадр данных и затем присоединяюсь.
for i in range(1, len(df.index)):
print(i)
d = {'Price' : df.ix[:,list(range(2, 81, 2))].loc[i].values, 'Qty': df.ix[:,list(range(3, 82, 2))].loc[i].values}
master1 = pd.DataFrame(d)
master1.set_index('Price', inplace=True)
master = master.join(master1, rsuffix=i)
Для небольших объемов данных это хорошо, но на 5-миллиметровых строках это занимает слишком много памяти и времени. Есть ли способ сделать это быстрее?
EndGoal :-
Current dataFrame Data :-
T1 P1 Q11
T1 P2 Q21
T1 P3 Q31
T2 P1 Q12
T2 P2 Q22
T3 P3 Q32
Output :-
P1 Q11 Q12
P2 Q21 Q22
P3 Q31 Q32
-Арпит