根据从另一个DataFrame构建的条件列表,选择Pandas DataFrame的子集

 起五贪黑_719 发布于 2022-12-20 15:41

假设我们有以下DataFrame

>>> import pandas as pd

>>> df_org = pd.DataFrame({'A' : [1,2,3,4,5,6], 
                           'B' : [1,1,1,1,2,2],
                           'C' : [1,2,3,4,1,2]})
   A  B  C
0  1  1  1
1  2  1  2
2  3  1  3
3  4  1  4
4  5  2  1
5  6  2  2

另外一个,df_criteria它有一些列df_org,我们将从中构建我们的标准.例如:

>>> df_criteria = pd.DataFrame({'B' : [1,2], 
                                'C' : [1,1]}) 

   B  C
0  1  1
1  2  1

我希望能够获取的值Adf_org数据帧为其中的相应值B,并C匹配在列出的df_criteria数据帧.在这个例子中,我想有一个df_org包含其行'0'和'4' 的子集,如下所示:

   A  B  C
0  1  1  1
4  5  2  1

作为熊猫的新手,我实现它的方式是使用for-loop思维模式:迭代行df_criteria并查询df_org每一行.然而,这是非常缓慢的,我的印象是必须有一个更加pythonic(和更快)的方式,不使用for-loops.我也研究了DataFrame.lookup它的使用,但是在我的情况下它没有用,因为索引中df_criteriadf_org不一定匹配.

任何建议都将非常感谢.非常感谢!

1 个回答
  • 一个简单的内部合并将起作用:

    In [285]:
    
    df_org.merge(df_criteria, on=['B','C'])
    Out[285]:
       A  B  C
    0  1  1  1
    1  5  2  1
    

    2022-12-20 15:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有