2つのデータフレームからの2つの行を比較するのに助けが必要です。まず、共通の値を見つける必要があります。この場合、MXという列の値です(変更されることはありません)。一致したら、行全体を比較して、値が同じかどうかを確認する必要があります。それらは確かに同じですが、問題はありません(print ok)が、そうでない場合、または1つの値でさえない場合は、どの値にするか、どこに不一致があるかを確認する必要があります。
#これは修正され、変更されないデータです(比較するため)。
Data:
dataframe1:
MX DT MN SC CS LN
0 1 11 1 400 1025 802436
1 5 21 4 240 3201 4025731
2 11 25 19 1428 2000 2013654
3 15 36 17 1005 6028 4251367
4 23 55 21 222 4017 1468532
5 38 32 33 426 4892 8347561
dataframe2:
MX DT MN SC CS LN
0 11 25 19 1428 2000 2013654
これは、MX:11の行で両方が一致する場合です。行全体はどちらの場合も同じですが、次のように比較されない場合があります。
dataframe3:
MX DT MN SC CS LN
0 11 22 0 1427 2000 2013654
要約すると、不一致がどこにあり、任意の行の値がdataframe1と異なる場合、どちらが期待値(dataframe1)であるかを知る必要があります。パンダで試してみるか、key:valuesとして辞書に渡してチェックする方が良いですか?
これが1つの方法です(違いを示すことができるようにデータを少し調整しました):
セットアップ:
df1 = pd.DataFrame({'MX': {0: 1, 1: 5, 2: 11, 3: 15, 4: 23, 5: 38},
'DT': {0: 11, 1: 21, 2: 25, 3: 36, 4: 55, 5: 32},
'MN': {0: 1, 1: 4, 2: 19, 3: 17, 4: 21, 5: 33},
'SC': {0: 400, 1: 240, 2: 1428, 3: 1005, 4: 222, 5: 426},
'CS': {0: 1025, 1: 3201, 2: 2000, 3: 6028, 4: 4017, 5: 4892},
'LN': {0: 802436, 1: 4025731, 2: 2013654, 3: 4251367, 4: 1468532, 5: 8347561}})
df2 = pd.DataFrame({'MX': {0: 11}, 'DT': {0: 26}, 'MN': {0: 19},
'SC': {0: 1428}, 'CS': {0: 2001}, 'LN': {0: 2013654}})
df1をフィルター処理してisin
からdf1
、ブール値の行に基づいてスライスします。
df1 = df1.loc[df1["MX"].isin(df2["MX"])]
print (df1.loc[:, (~df1.eq(df2.to_numpy()).iloc[0]).tolist()])
DT CS
2 25 2000
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加