python – 使用另一个DataFrame过滤Pandas DataFrame
发布时间:2020-12-16 21:31:52 所属栏目:Python 来源:网络整理
导读:我有一个多索引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,第一级作为组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 最终,我只对真实的元素和它们的真实日期感兴趣.在迭代日期中真实的元素列表将是很好的,我通过制作False NaN然后使用dropNa()来做. 我知道我可以编写一堆嵌套for循环来做到这一点,但时间至关重要;我想不出一种方法来使用pandas数据帧结构本质上和pythonically来做到这一点.任何帮助将非常感谢! 解决方法
您可以使用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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容