我有两个大的numpy阵列或数据帧,例如:
a=[[1, 10, 20, 30],[2, 50, 14, -10],[3, 11, 2, 0], ...]
b=[[10, 40, 30, 1, 1, 2],[0, 11, -1, 32, 3, 2],[9, 2, 51, -2, 3, 2], ...]
我想用a的值替换矩阵b的最后两列。我想说的是,在a的最后两列中,我们有1,替换为a中包含1作为a的第一列的行。此列是从1到结尾的计数器。事实上,在最后,矩阵b的列将从6列增加到10列
因此,新的b将类似于:
b=[[10, 40, 30, 1, 10, 20, 30, 50, 14, -10],[0, 11, -1, 32, 11, 2, 0, 50, 14, -10],[9, 2, 51, -2, 10, 20, 30, 11, 2, 0], ...]
我非常感谢任何以numpy数组或熊猫数据处理此请求的解决方案
假设
a
的第一列的形式为[1, 2, 3...]
,则可以使用此一行:事实上,用
a[:, 1:]
替换a
更方便,可以这样简化:np.c_[b[:,:-2], a[b[:,-2]-1], a[b[:,-1]-1]]
b
的最后两列被转换为a
的索引。如果a
的第一列与[1, 2, 3...]
不同,减去一列是不够的,您需要考虑如何将b
的最后两列映射到与a
相关的索引。我把它放在范围之外了两个建议
如果这些数据帧位于pandas数据帧中,则可以根据列b.5=a0.1和b.6=a1.1将“a”数据帧连接到“b”数据帧两次。然后读出所需的列(b.1-4、a0.2-4、a1.2-4。类似于:
然后删除第5列和第6列
否则,建议将“a”转换为不同的结构、元组列表或字典。您的索引作为第一个值嵌入,因此如果您在字典中失败,您将尝试获取{1:[10,20,30]、2:[50,14,-10]、3:[11,2,0]…},这使得查找更容易
相关问题 更多 >
编程相关推荐