2017-12-12 4 views
0

にTypeErrorを発生させたときに、私は彼らの行名で2データフレームを比較していると私は例と一致しない行の名前を取得したい:列名パンダのデータフレーム

check = sum(df1.index!=df2.index) 
if check: 
    raise TypeError("Not Match") 
else: 
    print("All OK") 

インデックスドン一致しなかった行の最初のインスタンスを出力したい。私は以下のようにprintステートメントを使ってみましたが、実行されません。

check = sum(df1.index!=df2.index) 
if check: 
    print(df1.index) 
    raise TypeError("Not Match") 
else: 
    print("All OK") 

答えて

2

声明 -

df1.index != df2.index 

boolsのnumpyの配列を返します。今はこれを保持しましょう。 、

if m.sum(): 
    raise TypeError(...) 

不一致の最初のインスタンスを取得するには - sumが呼ぶ、mTrue(非マッチ)のカウントを取得するには

m = df1.index.values != df2.index.values 

- それは仕事に若干の変更が必要な場合がありますmでインデックス: -

01 MaxUへ

print(df1[m].iloc[0]) 

おかげで、ここargmaxを使用してよりよい解決策です

print(df1[m.argmax()]) 
+0

''一致しなかった行の最初のインスタンスを出力したい - 'print(df1 [m.argmax()])'を意味しますか? – MaxU

+0

@マックスはい、それは良い選択だと私は確かに私よりも良いと思う。自由に答えて、私は削除します:) –

+0

私はちょうど私が違ったOPを理解したことを意味 - 私は最初の一致しない行を、インデックスではなく印刷したいと思います。あなたの答えは大丈夫です。気軽にそれを使用してください:-) – MaxU

関連する問題