我有一个大矩阵作为熊猫 DF,没有任何“键”,但顶部有纯数字。一个较小的版本只是为了演示这里的问题,就像这个输入:
M=pd.DataFrame(np.random.rand(4,5))
我想要完成的是使用另一个给定的 DF 作为具有这样结构的参考
N=pd.DataFrame({'A':[2,2,2],'B':[2,3,4]})
...从大 DF 中提取值,而 'A' 的值对应于大 DF 的ROW编号和 'B' 值对应于大 DF的COLUMN编号,以便预期输出如下所示:
Large DF
0 1 2 3 4
0 0.766275 0.910825 0.378541 0.775416 0.639854
1 0.505877 0.992284 0.720390 0.181921 0.501062
2 0.439243 0.416820 0.285719 0.100537 0.429576
3 0.243298 0.560427 0.162422 0.631224 0.033927
Small DF
A B
0 2 2
1 2 3
2 2 4
Expected Output:
A B extracted values
0 2 2 0.285719
1 2 3 0.100537
2 2 4 0.429576
到目前为止,我已经尝试过类似这样的不同版本
N['extracted'] = M.iloc[N['A'].astype(int):,N['B'].astype(int)]
..但它一直失败并显示错误
TypeError: cannot do positional indexing on RangeIndex with these indexers
[0 2
1 2
2 2
哪种方法最好?通过将 DF 转换为 numpy 数组来完成这项工作是否更好?
感谢帮助!
我认为您想使用 apply 功能。这将逐行浏览您的数据集。
N['extracted'] = N.apply(lambda row: M.iloc[row['A'], row['B']], axis=1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句