Супер просте призначення на місці: df['new'] = 0
Для модифікації на місці виконайте пряме призначення. Це завдання транслюється пандами для кожного рядка.
df = pd.DataFrame('x', index=range(4), columns=list('ABC'))
df
A B C
0 x x x
1 x x x
2 x x x
3 x x x
df['new'] = 'y'
df
A B C new
0 x x x y
1 x x x y
2 x x x y
3 x x x y
Примітка для стовпців об’єкта
Якщо ви хочете додати стовпець порожніх списків, ось моя порада:
- Подумайте про те, щоб цього не робити.
objectколонки - це погана новина з точки зору продуктивності. Перегляньте, як структуровані ваші дані.
- Подумайте про збереження даних у розрідженій структурі даних. Більше інформації: розріджені структури даних
Якщо вам потрібно зберегти стовпець зі списками, переконайтеся, що не копіюєте один і той же посилання кілька разів.
df['new'] = [[]] * len(df)
df['new'] = [[] for _ in range(len(df))]
Створення копії: df.assign(new=0)
Якщо вам потрібна копія, скористайтеся DataFrame.assign:
df.assign(new='y')
A B C new
0 x x x y
1 x x x y
2 x x x y
3 x x x y
І якщо вам потрібно призначити кілька таких стовпців з однаковим значенням, це так просто, як,
c = ['new1', 'new2', ...]
df.assign(**dict.fromkeys(c, 'y'))
A B C new1 new2
0 x x x y y
1 x x x y y
2 x x x y y
3 x x x y y
Призначення кількох стовпців
Нарешті, якщо вам потрібно призначити кілька стовпців з різними значеннями, ви можете використовувати assignзі словником.
c = {'new1': 'w', 'new2': 'y', 'new3': 'z'}
df.assign(**c)
A B C new1 new2 new3
0 x x x w y z
1 x x x w y z
2 x x x w y z
3 x x x w y z
df['new'] = pd.Series([0 for x in range(len(df.index))], index=df.index).