为什么在具有混合元素类型的 Pandas 数据帧中,当我更改元素时会"ValueError"?



所以想象一下,我有一个如下的数据帧(导入panda为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]})

现在,如果我想用替换列"a"中的3个元素

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])]})

并使用之前的命令来替换第三项,我不会收到任何错误。我在这里做错了什么?最好的做法是不犯这个错误?

附言:我在ubuntu 18.10和Pycharm IDE(2019.3.3(上使用Python 3.7.5。我的Panda版本是0.25.3,numpy是1.17.3。

在尝试访问单个值时使用df.atdf.loc允许您访问多行和多列,这可能是问题所在,尽管我不完全确定。查看文档。

df.at[2,'a'] = np.array([52,23,34])

相关内容

最新更新