2017-02-26 67 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