#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 Я проверил фрейм данных, и он выглядит корректным после каждого слияния. Есть другие предложения?