Как создать новый столбец массивов numpy в фрейме данных pandas?

#python #pandas #numpy

Вопрос:

У меня есть следующий фрейм данных:

 df = pd.DataFrame({'id': [1, 2, 3, 4],
                   'a': ['on', 'on', 'off', 'off'],
                   'b': ['on', 'off', 'on', 'off']})
 

Как я могу создать новый столбец df['new'] с типом массивов/списков NumPy, чтобы я мог выполнять такие операции, как:

 df.loc[1, 'new'] = np.array([2 , 'l'])
#or
df.loc[1, 'new'] = [2 , 'l']
 

Заранее спасибо!

Комментарии:

1. Вам действительно нужны массивы, а не списки? object Столбец массива dtype может содержать что угодно — массив, список, дикт, строку, Нет`

2. список @hpaulj мне тоже подходит

3. Зачем вам нужно «объявлять» тип объекта, который вы помещаете в a dataframe ? Просто положи его туда.

4. @Aryerez Я сначала так и подумал, но когда я делал это напрямую, я получал следующую ошибку: ValueError: cannot set using a multi-index selection indexer with a different length than the value

Ответ №1:

Укажите тип данных как «объект» при создании нового столбца, а затем вставьте элементы по мере необходимости:

 df["new"] = pd.Series(dtype="object")
df.at[1, 'new'] = [2 , 'l']
>>> df
   id    a    b     new
0   1   on   on     NaN
1   2   on  off  [2, l]
2   3  off   on     NaN
3   4  off  off     NaN