У меня проблема с памятью с пандами. Я искал вокруг, но я не могу найти решение, которое работает для меня. Я считаю, что это ошибка 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 строк. Я хочу выбрать только дату столбцов, закрыть и закрытьPct. Я переименовываю столбцы в тикер namn, чтобы следить за акциями.
Я пытался использовать dask, но это не сработало. :С
бр
Можете ли вы подтвердить, что merge работает должным образом? Я подозреваю, что происходит что-то подозрительное, выполняющее внутреннее соединение, которое разрушает ваш фреймворк данных.
@eduffy Я не хочу добавлять. Я хочу, чтобы каждая новая акция добавлялась в виде нового столбца с заголовками (например) AAPL AAPLPct (т.е. цена и процент для цены)
@LukaszTracewski, когда я печатал df.head() для каждого слияния, все выглядело нормально. Я постараюсь, когда я буду дома, проверить весь фрейм данных после слияния, чтобы контролировать, как он работает, как ожидалось. Потому что результат, который я вижу при печати head(), выглядит нормально.
@LukaszTracewski Я проверил фрейм данных, и после каждого слияния он выглядит правильно. Любое другое предложение?






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