如何解决Pandas - 如何使用另一个 DF 的值从没有任何“键”的大 DF 中提取值?
我有一个大矩阵作为pandas DF,没有任何“键”,但顶部有普通数字。一个较小的版本只是为了演示这里的问题,就像这样的输入:
M=pd.DataFrame(np.random.rand(4,5))
我想要完成的是使用另一个给定的 DF 作为具有这样结构的参考
N=pd.DataFrame({'A':[2,2,2],'B':[2,3,4]})
...从大 DF 中提取值,而“A”的值对应于 ROW 编号,而“B”值对应于 COLUMN 编号大 DF 使预期的输出看起来像这样:
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 数组来完成这项工作是否更好?
感谢您的帮助!
解决方法
我认为您想使用应用功能。这将逐行浏览您的数据集。
N['extracted'] = N.apply(lambda row: M.iloc[row['A'],row['B']],axis=1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。