Вставка пропущенных полей в кадр данных pandas с дублированными индексами

У меня есть похожая проблема для ссылки.

Решения там, кажется, не работают в моем конкретном случае. Я думаю, что это потому, что размер данных.

У меня есть размер файла (2 018 901 - 6) и список длиной 2 083 656. Цель списка (как в ссылке выше) состоит в том, чтобы вставить недостающие временные интервалы в оригинальную df.

Я попробовал принятое решение по ссылке, но программы продолжают работать бесконечно. Второе решение, т. Е.

 df.merge(how='right', on='A', right = pd.DataFrame({'A':my_list})).sort(columns='A').reset_index().drop(['index'], axis=1)

Выдает эту ошибку:

***MemoryError:

Чтобы дать некоторое представление о моей проблеме, у меня есть рыночные клиринговые цены, хранящиеся в df. Для каждого временного интервала (ts) -1 в час - 24 открытых торговых сессии, соответствующих следующим 24 часам. По некоторым тс рынок может не очиститься и поэтому у меня разрыв.

Например, скажем, в настоящий момент это ts 1. На данный момент открыты следующие 24 ts (от ts 2 до ts 25). При текущем ts 2, открытые ts будут от 3 до 26 и так далее. Таким образом, в данных у меня есть строка для каждого TS (кстати, также повторяется TS). Когда при некоторых значениях не было очистки, происходит скачок данных.

Я хочу заполнить пробелы с

my_list

Это потому, что я продолжаю обрабатывать данные с другими источниками без каких-либо пробелов в любой TS.

Это кусок df:

       A     1     2 bin bin_t1  bin_dum
89 381.0   0.6 153.8  11      7      7.0
90 382.0   0.5  59.4   7      7      7.0
91 383.0   0.5  53.4   7      6      6.0
92 384.0   0.4  45.9   6      6      6.0
93 385.0   0.4  46.5   6      6      6.0
94 386.0   0.3  45.4   6      6      6.0
95 387.0 740.8  34.1   6      5      5.0
96 365.0   0.1   2.4   5      5      5.0
97 366.0   0.1   0.5   5      6      6.0
98 388.0 732.8  38.5   6      5      5.0
99 366.0   1.7   2.7   5      5      5.0

Колонка А обозначает открытую тс. Существует переход со строки 97 на 98, то есть с 366 до 388. Таким образом, в my_list у меня есть полная последовательность, с пропущенными символами ts, в данном случае

367 368 369 370 ... 387

Идея состоит в том, чтобы увеличить df, заполнив прерванные последовательности и заполнив остальные столбцы нулями.

Что я пробовал, кроме предыдущей строки кода,

df.set_index('A')
new_index = pd.Index(my_list, name='A')
df.set_index('A').reindex(new_index)
df.set_index('A').reindex(new_index).reset_index()

Этот подход просто продолжает работать.
Форма df и my_list соответственно

[2018901 rows x 6 columns]
[1 row x 2083656 columns]

Как я могу справиться с этим?

Спасибо

РЕДАКТИРОВАТЬ

Исходные данные поступают из нескольких файлов. Чтобы устранить подозрения на размер, я попытался использовать решение, упомянутое ранее, в кадре данных, состоящем из одного файла.

Теперь я получаю эту ошибку, похожую на случай:

*** ValueError: cannot reindex from a duplicate axis

Я не могу избавиться от устранения дублированных значений. Есть ли работа вокруг?

Благодарю.

0 ответов

Другие вопросы по тегам