Слияние панд: ошибка памяти:

#python #pandas

#python #pandas

Вопрос:

У меня проблема с памятью в pandas. Я искал вокруг, но я не могу найти решение, которое работает для меня. Я полагаю, что это ошибка PEBCAK, поскольку я новичок в python и pandas.

это код, который вызывает ошибку:

 filelist = glob.glob("./data/*.csv")
df = pd.DataFrame()

for i in filelist:
    tmp = pd.read_csv(i)
    ticker = i.split('/')[-1].split('.')[0].replace('data\','')
    data = pd.DataFrame(tmp, columns=["close", "closePct","date"])
    data = data.rename(columns={'close': ticker, 'closePct': ticker "Pct"})

    # get only stocks with 10y of data
    if len(data) > (250*10):
        if len(df.columns) > 0:
            df = pd.merge(df, data, on='date')
            df = df.dropna()            
        else:
            df = data.copy()

        print(len(df.columns))
    else: 
        print("drop "   ticker)


df.set_index('date', inplace=True)
  

Количество файлов, которые я пытаюсь прочитать, составляет около 200, и они содержат 2500 строк каждый. Я хочу выбрать только столбцы date, close и closePct. Я переименовываю столбцы в тикер namn, чтобы отслеживать запасы.

Я пробовал использовать dask, но это сработало не так хорошо. :S

Br

Комментарии:

1. Является merge правильным методом в этом случае? Это выглядит как append .

2. Можете ли вы подтвердить, что merge работает так, как ожидалось? Я подозреваю, что происходит что-то подозрительное при выполнении внутреннего соединения, которое разрушает ваш фрейм данных.

3. @eduffy Я не хочу добавлять. Я хочу, чтобы каждый новый запас добавлялся в виде нового столбца с заголовками (например) AAPL AAPLPct, (т.е. цена и процент для cose)

4. @LukaszTracewski когда я печатал df.head() для каждого слияния, все выглядит нормально. Я попытаюсь, когда буду дома, проверить весь фрейм данных после слияния, чтобы проверить, работает ли он должным образом. Потому что результат, который я вижу при печати head(), выглядит нормально.

5. @LukaszTracewski Я проверил фрейм данных, и он выглядит корректным после каждого слияния. Есть другие предложения?