df1とdf2という名前の2つの異なるDataFrameがあり、同じID列がありますが、一部のIDのカウントが同じで、一部のIDのカウントが異なるため、カウント値が異なる同じIDのデータを取得したいので、両方のDataFrameにさまざまなインデックス
以下は私のdf1です
id valueA
0 255 1141
1 91 1130
2 347 830
3 30 757
4 68 736
5 159 715
6 32 713
7 110 683
8 225 638
9 257 616
私のdf2は
id valueB
0 255 1231
1 91 1170
2 5247 954
3 347 870
4 30 757
5 68 736
6 159 734
7 32 713
8 110 683
9 225 644
10 257 616
11 917 585
12 211 575
13 25 530
どうやってやるの?
次のmerge
コマンドでデータフレームを使用およびフィルタリングしquery
ます。
df1.merge(df2, on='id').query('valueA != valueB')
出力:
id valueA valueB
0 255 1141 1231
1 91 1130 1170
2 347 830 870
5 159 715 734
8 225 638 644
同じメソッドの異なる構文:
df_out = df1.merge(df2, on='id')
df_out[df_out['valueA'] != df_out['valueB']]
以下のコメントに応えて:
確かに、set_indexを使用して、パンダに配置を処理させることができます。
df1 = df1.set_index('id')
df2 = df2.set_index('id')
df_diff = df1['valueA'] - df2['valueB']
df_diff = df_diff[df_diff.notnull() & df_diff.ne(0)]
pd.concat([df1.reindex(df_diff.index), df2.reindex(df_diff.index)], axis=1)
出力:
valueA valueB
id
91 1130 1170
159 715 734
225 638 644
255 1141 1231
347 830 870
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加