互相查询熊猫

时间:2019-01-10 07:06:53

标签: python pandas

我正在尝试针对另一个过滤df,如下所示:

df1:
     myval
0    1.2
1    3.5
2    5.7
3    0.4

df2:
     thrsh
0    0.4
1    5.5
2    1.0
3    0.0

我想用这种方式查询:

(df1['myval']>df2['thrsh'])

因此要创建一个具有所有组合的新df:

df3:

thrsh  myval 
0      0    true
       1    true
       2    true
       3    false
1      0    false
       1    false
       2    true
       3    false

基本上从2个df的组合中创建第3维。 目前的结果是“ ValueError:只能比较标记相同的Series对象”。

有什么主意吗? 非常感谢你!

1 个答案:

答案 0 :(得分:1)

分别创建MultiIndex.from_productreindex两列,因此在这两列中都获得相同的Multindex,因此可以进行比较:

mux = pd.MultiIndex.from_product([df1.index, df2.index], names=['thrsh','myval'])
m = df1['myval'].reindex(mux, level=1) > df2['thrsh'].reindex(mux, level=0)
print (m)
thrsh  myval
0      0         True
       1         True
       2         True
       3        False
1      0        False
       1        False
       2         True
       3        False
2      0         True
       1         True
       2         True
       3        False
3      0         True
       1         True
       2         True
       3         True
dtype: bool