Добавить столбец в dataframe с постоянным значением


187

У меня есть существующий фрейм данных, который мне нужно добавить дополнительный столбец, который будет содержать одинаковое значение для каждой строки.

Существующий df:

Date, Open, High, Low, Close
01-01-2015, 565, 600, 400, 450

Новый дф:

Name, Date, Open, High, Low, Close
abc, 01-01-2015, 565, 600, 400, 450

Я знаю, как добавить существующий столбец series / dataframe. Но это другая ситуация, потому что все, что мне нужно, это добавить столбец «Имя» и установить для каждой строки одно и то же значение, в данном случае «abc».

Ответы:


295

df['Name']='abc' добавит новый столбец и установит все строки в это значение:

In [79]:

df
Out[79]:
         Date, Open, High,  Low,  Close
0  01-01-2015,  565,  600,  400,    450
In [80]:

df['Name'] = 'abc'
df
Out[80]:
         Date, Open, High,  Low,  Close Name
0  01-01-2015,  565,  600,  400,    450  abc

35
Есть ли другой способ сделать это? Я получаю следующее предупреждение. Значение пытается быть установлено для копии среза из DataFrame. Попробуйте вместо этого использовать .loc [row_indexer, col_indexer] = value. Смотрите предостережения в документации: pandas.pydata.org/pandas-docs/stable/…
Вишну Вишванат

3
Это означает, что вы присваиваете что-то, что является копией, а не оригинальной df, я не могу комментировать дальше, не увидев данные и ваш код в форме вопроса. Отвечать на вопросы в комментариях контрпродуктивно. Этот код работает, вы сделали что-то до этого, чтобы поднять предупреждение
EdChum

@vishnuviswanath Я получаю то же самое предупреждение, что и вы, когда пользуюсь ноутбуком Jupyter. Это происходит со мной, когда у меня нетривиальные размеры DataFrame (> 200 записей) и определенные комбинации назначений и простой распечатки df.
Билл

4
@vishnuviswanath Возможно, вы создали срез исходного кадра данных до этого, а затем пытаетесь установить новый столбец на этом срезе. Вместо этого добавьте новый столбец в исходный фрейм данных, а затем создайте срез. Вероятно, когда вы создаете фрагмент данных, pandas не создает копию и каким-то образом управляет ею из исходного кадра данных. Этот вид портит эту оптимизацию и, следовательно, предупреждение.
amit_saxena

2
Чтобы обойти упомянутое предупреждение панд, просто получите копию фрейма данных, используя его .copy(), прежде чем использовать его (если только он не огромен или что-то или производительность действительно не имеют значения).
matanster
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.