2016-12-22 3 views
4

Я всегда новые столбцы в панд, используя следующие:Панды - создать новый столбец

df['new_column'] = value 

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

Каким образом можно создать новый столбец без создания копии?

+9

Этот способ является одним из нескольких правильных способов. Предупреждение, которое вы получаете, состоит в том, что 'df' является копией чего-то еще, и теперь вы пытаетесь изменить' df'. Вы должны убедиться, что вы в порядке с 'df', отделенным от того, от чего вы его скопировали. После этого вы можете либо «df.is_copy = None», либо «df = df.copy()». Есть и другие способы справиться с этим. Как мне нравится, что я никогда не вижу, что когда я создаю 'df' из других источников, я обычно делаю' df = other_df.loc [:,:] 'Использование' loc' отделяет его от меня. В то время как 'df = other_df [my_cols]' нет. – piRSquared

+0

Предоставьте версию для python и pandas, чтобы четко сузить корень предупреждения. – Leb

+0

Я интерпретировал вопрос как: как выполнить модификацию на месте существующего DataFrame, где модификация создает новый столбец, выделяя больше памяти существующему DataFrame, а не копируя его. – ely

ответ

4

Попробуйте использовать

df.loc[:,'new column'] = value 

как комментарии piRSquared, df, вероятно, является копией другого DataFrame и при установке значения df это, вероятно, берет на себя в том, что называется цепи индексации. Для получения дополнительной информации см. pandas docs.

Смежные вопросы