2017-10-15 43 views
1

比方說,我有一個數據幀DF1這樣的:實存行基於其他Dataframes

A  B 
0 123 997 
1 123 998 
2 124 999 
3 125 997 
4 125 998 

和另外2 Dataframes A和B,含出現在DF1每一個可能的項目:

A 
    a  
0 123  
1 124  
2 125  
3 126  
4 127  

B 
    b  
0 999  
1 998  
2 997  
3 996  
4 995 

如何以有效的方式檢查數據框A和數據框B中每一行的組合DF1中的存在情況,以獲得它的矩陣?

像這樣的事情

Existence matrix/dataframe: 
     999 998 997 996 995 
123 False True True False False 
124 True False False False False 
125 False True True False False 
126 False False False False False 
127 False False False False False 

回答

2

您可以使用pd.crosstab + reindex

df = pd.crosstab(df.A, df.B).reindex(index=A.a, 
       columns=B.b).fillna(0).astype(bool) 

print(df) 
b  999 998 997 996 995 
a 
123 False True True False False 
124 True False False False False 
125 False True True False False 
126 False False False False False 
127 False False False False False 
+0

尼斯之一! 〜:-) – Wen

+0

@Wen謝謝。看起來,今天事情一直很緩慢。 –

+1

週日,嗯,這是正常的〜 – Wen