python - 使用另一个 DataFrame 过滤 Pandas DataFrame

标签 python filter pandas

我有一个多索引 DataFrame,第一层是组 ID,第二层是元素名称。还有更多的组,但下面只显示了第一个。

                   2000-01-04  2000-01-05 
Group Element                                     
1       A          -0.011374    0.035895 
        X          -0.006910    0.047714 
        C          -0.016609    0.038705 
        Y          -0.088110   -0.052775 
        H           0.000000    0.008082 

我有另一个 DataFrame 只包含 1 个索引,即组 ID。两者的列相同,都是日期。

         2000-01-04  2000-01-05 
Group                                     
1        -0.060623   -0.025429 
2        -0.066765   -0.005318 
3        -0.034459   -0.011243 
4        -0.051813   -0.019521 
5        -0.064367    0.014810 

我想使用第二个 DataFrame 来过滤第一个 DataFrame,方法是检查每个元素是否小于该日期的组值,以获得如下内容:

                   2000-01-04  2000-01-05 
Group Element                                     
1       A          False        False     
        X          False        False     
        C          False        False     
        Y          True         True
        H          False        False     

最终,我只对为 True 的元素和它们为 True 的日期感兴趣。在日期迭代中为真的元素列表会很棒,我已经通过制作 False NaN 然后使用 dropNa() 来做到这一点。

我知道我可以写一堆嵌套的 for 循环来做到这一点,但时间至关重要;我想不出一种方法来本质上和 python 地使用 pandas 数据帧结构来做到这一点。任何帮助将不胜感激!

最佳答案

您可以使用 groupby 申请:

In [11]: g = df1.groupby(level='Group')

In [12]: g.apply(lambda x: x <= df2.loc[x.name])
Out[12]: 
              2000-01-04 2000-01-05
Group Element                      
1     A            False      False
      X            False      False
      C            False      False
      Y             True       True
      H            False      False

关于python - 使用另一个 DataFrame 过滤 Pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21175059/

相关文章:

python - 在 Python 中,如何根据 ColA 值向 ColB 分配值?

android - 将自定义过滤器应用于相机输出

python - 词典列表,如何获取 : intersection based on one value and symmetric difference based on another value

python - 优化 - 数据帧聚合在聚合过程中是否会使用不同的过滤器 : df. loc?

python - 基于多列值的重复键对两个大型 Pandas DataFrame 进行条件合并/连接 - Python

python - 请求 - 前几个响应 200 然后 403

python - 带有预抛出钩子(Hook)的自定义异常?

python - C++ 代码中递减运算符后的等号

wordpress-theming - wordpress 过滤器文档?试图理解 add_filter()

python - 广播错误 Pandas