我有一个数据框,memory看起来像这样:
>>> memory
input action result
1 2 3 4 action 1 2 3 4
0 11 22 33 44 a 10 20 30 40
1 10 20 30 40 b 90 90 90 90
2 90 90 90 90 c 91 91 91 91
>>> type(memory)
<class 'pandas.core.frame.DataFrame'>
我有一个数据框,bla看起来像这样:
>>> bla
1 2 3 4
0 11 22 33 44
>>> type(bla)
<class 'pandas.core.frame.DataFrame'>
我想要一个由取出的memory地方制成的 daraframe bla:
>>> minus_bla
input action result
1 2 3 4 action 1 2 3 4
1 10 20 30 40 b 90 90 90 90
2 90 90 90 90 c 91 91 91 91
和一个bla被选中的地方:
>>> memory_bla
input action result
1 2 3 4 action 1 2 3 4
0 11 22 33 44 a 10 20 30 40
我试图通过过滤来做到这一点,但这很愚蠢:
memory[memory.loc[:,'input'] == bla]
我收到此错误:
ValueError: Can only compare identically-labeled DataFrame objects
无论如何,也许我可以用 a 来做到这一点,merge但到目前为止我还没有运气。
我现在解决这个问题的方法是产生一个如下所示的切片条件的巨大解决方法:
>>> memory[
(memory[('input', 1)]==bla.loc[0, 1]) &
(memory[('input', 2)]==bla.loc[0, 2]) &
(memory[('input', 3)]==bla.loc[0, 3]) &
(memory[('input', 4)]==bla.loc[0, 4])]
input action result
1 2 3 4 action 1 2 3 4
0 11 22 33 44 a 10 20 30 40
这不只是悲伤吗?特别是在我的情况下,我可以拥有可变数量的inputs(不仅仅是 4)。
当然有更好的方法来选择和反对子数据框(即使较大的数据框具有多个列级别),可能涉及merge? 你能为我指出正确的方向吗?
喵喵时光机
皈依舞
相关分类