2014-06-20 8 views
0

데이터 프레임이 두 개 있고 아래 두 가지 문제에 대한 솔루션을 찾으려고합니다.팬더 데이터 프레임 행 일치

  1. 나는 df_new 그들이 df_old이나하지 존재하는지 확인하려는 df_old에서 "SERIAL_NUMBER"를 일치합니다. 예를 들어, df_old가 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)은 개봉 된 것일 수 있습니다 ... 또한 "시리즈 대수학"에 대한 질문이 있습니다. –

관련 문제