2017-02-26 72 views
1

上限提取行我有数据帧这样与由参照另一数据帧

code Type num 
a A  3 
a A  4 
a A  5 
a B  6 
b A  7 
b A  8 
c B  9 
c C  10 

我也有表示受限制的代码和类型和num与每个代码和类型的上限的数据帧。

code Type limit 
a A 4 
b A 7 
c C 11 

所以我想获得低于

code Type num 
a A  3 
a A  4 
a B  6 
b A  7 
c B  9 
c C  10 

结果如何选择和提取行?

回答

1

您可以merge随后是filter过程中变为:

df.merge(df1, how="left")[lambda x: x.limit.isnull() | (x.num <= x.limit)].drop("limit", 1) 

#code Type num 
#0 a A 3 
#1 a A 4 
#3 a B 6 
#4 b A 7 
#6 c B 9 
#7 c C 10 
+0

谢谢合作!我想知道这个代码中的'filter()'方法在哪里。我如何应用'filter()'方法? – Heisenberg

+1

这不是真的使用“过滤器”。当我说'filter'时,我指的是这个部分:'[lambda x:x.limit.isnull()| (x.num <= x.limit)]',也许最好称它为布尔索引,基本上它允许你把它写在一行中,因为你可以将前一个结果作为lambda表达式中的一个参数引用, x'在这里。 – Psidom