我正在尝试针对另一个过滤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对象”。
有什么主意吗? 非常感谢你!
答案 0 :(得分:1)
分别创建MultiIndex.from_product
和reindex
两列,因此在这两列中都获得相同的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