операция объединения панд (очень большие данные) - PullRequest
0 голосов
/ 14 октября 2019

У меня есть пандас 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

-Арпит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...