我在Pandas中有一列Numpy数组,类似于:
col1 col2 col3
0 1 a None
1 2 b [2, 4]
2 3 c None
字符串[2, 4]
实际上是np.array([2, 4])
。现在我需要估算缺失的值,我有一个数组列表。举例来说:
vals_to_impute = [np.array([1, 2]), np.array([1, 4])]
型
我试过:
mask = col3.isna()
df.loc[mask, "col3"] = vals_to_impute
型
这将导致错误:
ValueError: Must have equal len keys and value when setting with an ndarray
型
我试着转换成Numpy数组,提取列等,没有任何效果。实际上是否可以在矢量化操作中设置此值,或者我必须手动执行循环?
4条答案
按热度按时间kzmpq1sx1#
我设法使用pd.series而不是list来实现它。我还必须输入这个系列的索引,以便插入正确。也许可以做得更容易。
字符串
输出量:
型
wi3ka0sx2#
使用短循环的一个选项:
字符串
这也可以使用类似于here的方法来解决,在使用底层numpy数组时利用共享内存:
型
修改的 Dataframe :
型
使用的输入:
型
kt06eoxx3#
不知道你的问题到底在哪里,因为你只显示了你的代码的一部分。
对我来说,这工作就像预期的那样:
字符串
hrirmatl4#
据我所知,这个问题是由loc影响基于索引匹配的值引起的。
以你为例:
字符串
如果你看看
型
你实际上有:
型
因此,尽管您只选择了具有“True”的行,但索引的长度仍为3。此外,您的列表
vals_to_impute
没有索引,因此Pandas不知道如何影响值。一个快速的解决方案可能是:
型
注意事项: