Итак, представьте, что у меня есть нижеприведенный фрейм данных (импортируйте pandas как pd, импортируйте numpy как np):
df = pd.DataFrame({'a': [np.array([1,2,3]), np.array([4,5,6]), np.array([7,8,9]), np.array([10,11,12]), np.array([13,14,15])], 'b':[5,5,12,123,5]})
Теперь, если я хочу заменить 3 элемента в столбце 'a 'using:
df.loc[2,'a']= np.array([53,23,4])
Я получаю следующую ошибку:
Traceback (most recent call last):
File "...", line 3326, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-67-4741bddaf261>", line 1, in <module>
df.loc[0,'a']= np.array([53,23,4])
File "...", line 205, in __setitem__
self._setitem_with_indexer(indexer, value)
File "...", line 547, in _setitem_with_indexer
"Must have equal len keys and value "
ValueError: Must have equal len keys and value when setting with an iterable
Теперь, если я удалю второй столбец (' b ') и сделаю мой фрейм данных как
df = pd.DataFrame({'a': [np.array([1,2,3]), np.array([4,5,6]), np.array([7,8,9]), np.array([10,11,12]), np.array([13,14,15])]})
и используйте точно предыдущую команду для замены 3-го пункта, я не получу никакой ошибки. Что я здесь не так делаю? Как лучше избегать этой ошибки?
PS Я использую Python 3.7.5 в Ubuntu 18.10 и Pycharm IDE (2019.3.3). Версия моего pandas - 0.25.3, numpy - 1.17.3.