Заполните столбцы в панде данных фрейма данными из другого столбца на месте - PullRequest
1 голос
/ 07 ноября 2019

Итак, я загружаю много данных из базы данных SQL и записываю их в фрейм данных в PyCharm. Основываясь на данных в одном столбце, мне нужно создать больше столбцов и добавить их во фрейм данных. При этом я получаю сообщение об ошибке «Не удается выделить массив с формами (x, 91000) и dtype int32» - x всегда находится между 200 и 400. Я искал «Ошибка памяти» и уже изменил «vm». options ", так что у PyCharm больше памяти - я все еще получаю ошибку памяти.

Так что я думаю, что мне нужно изменить свой код. Я создаю новые столбцы с помощью следующего кода:

list = pd.unique(df['name'])
list.sort()

for idx in list:
    col1 = '%s Col1' % idx
    df[col1] = np.int32(0)
    df.loc[(df['name'].values == idx ) & (df['level'].values == 4), col1] = df.loc[(df['name'].values == idx ) & (df['level'].values == 4), 'xyz']

Я делаю это для 7 новых столбцов на уникальное имя. В последние дни я много исследовал, и, как я понял, python сначала создает копию моего фрейма данных, затем фильтрует фрейм данных с моими условиями и, наконец, отфильтрованные данные перемещаются в исходный фрейм данных. При выделении копии фрейма данных возникает ошибка памяти (наверное).

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

...