2014-06-20 232 views
0

我有兩個數據幀,並試圖找到解決方案,以解決以下兩個問題。大熊貓數據幀行匹配

  1. 我想匹配「的序列號」從df_old到df_new,想看看他們是否在df_old或不存在。例如,如果df_old的Serial_Number爲1,2,3,而df_new的序列號爲1,3,4,則結果應爲1和3.

  2. 顯示數據的好方法。

    import pandas as pd 
    
    df_old = pd.DataFrame({'S_No' : [1,2,3,4,5], 'Serial_Number' : [1234,2345,3456,1456,9867], 'Beg_Balance' : [10,20,45,21,29], 'End_Balance' : [2,6,8,5,3]}) 
    
    df_new = pd.DataFrame({'S_No' : [1,2,3,4], 'Serial_Number' : [8754,5657,1234,9867], 'Beg_Balance' : [32,20,10,29], 'End_Balance' : [5,6,2,1]}) 
    
    
    df_old_1 = df_old.sort('Serial_Number',ascending=True) 
    
    df_new_1 = df_new.sort('Serial_Number',ascending=True) 
    
    print df_old_1 
    
    print df_new_1 
    
    an = df_old_1['Serial_Number'] != df_new_1['Serial_Number'] 
    
    bn = df_new_1['Serial_Number'] != df_old_1['Serial_Number'] 
    

回答

1

這可能是你正在尋找某種合併的:

In [11]: pd.merge(df_old_1, df_new_1, on='Serial_Number') 
Out[11]: 
    Beg_Balance_x End_Balance_x S_No_x Serial_Number Beg_Balance_y End_Balance_y S_No_y 
0    10    2  1   1234    10    2  3 
1    29    3  5   9867    29    1  4 

看到更多the docs

+0

@andy ...不幸的是,我只是想要一個最終的數據幀,說明在舊的序列號沒有被發現。像SQL和SAS語言中的「NOT IN」操作符。 – LonelySoul

+0

嗯,看來我誤解了這個問題...我認爲〜df.serial.isin(df2.serial)可能是你之後...還有一個關於「系列代數」的問題,將嘗試和挖掘後 –