#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