python - 为什么在具有混合元素类型的 Pandas DataFrame 中,当我更改元素时出现“ValueError”?
问题描述
所以想象一下,我有一个如下所示的数据框(将 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]})
现在,如果我想使用以下方法替换“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])]})
并使用之前的命令替换第三项,我不会收到任何错误。我在这里做错了什么?没有此错误的更好做法是什么?
PS 我在 ubuntu 18.10 和 Pycharm IDE (2019.3.3) 上使用 Python 3.7.5。我的熊猫版本是 0.25.3,numpy 是 1.17.3 。
解决方案
df.at
在您尝试访问单个值时使用。df.loc
允许您访问可能存在问题的多行和多列,尽管我不完全确定。查看文档。
df.at[2,'a'] = np.array([52,23,34])
推荐阅读
- java - 我应该为单元测试隔离多少方法?
- c - 尝试写入结构时出现分段错误
- c# - 如何防止自动发现 DbConfiguration
- sql - 来自多个列的多个条件 CASE WHEN
- r - Rcpp 公式输入参数
- shell - 带有日期正则表达式的 match() 中的外壳变量
- r - 具有两个循环和存储结果的 R 并行编程
- java - 在 wso2 EI 中为多个 salesforce 操作建立单个 salesforce 连接
- laravel - SQLSTATE [23000]:违反完整性约束:1048 列“restaurant_id”不能为空
- azure - azure python sdk方法中的custom_headers是什么?