我有一个多索引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
我有另一个仅包含1个索引(即组ID)的DataFrame。两者的列都是相同的,它们是日期。
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来过滤第一个,以便获得如下所示的结果:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句