基于其他Dataframe在Dataframe中存在行

时间:2017-10-15 21:09:18

标签: python pandas dataframe

比方说,我有一个像这样的Dataframe DF1:

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

其他2个数据帧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

1 个答案:

答案 0 :(得分: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