Pandas: periksa apakah baris dari satu dataframe ada di dataframe lain


Anda dapat menggunakan sintaks berikut untuk menambahkan kolom baru ke pandas DataFrame yang menunjukkan apakah setiap baris ada di DataFrame lain:

 #merge two DataFrames on specific columns
all_df = pd. merge (df1, df2, on=[' column1 ', ' column2 '], how=' left ', indicator=' exists ')

#drop unwanted columns
all_df = all_df. drop (' column3 ', axis= 1 )

#add column that shows if each row in one DataFrame exists in another
all_df[' exists '] = np. where (all_df. exists == ' both ', True , False )

Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.

Contoh: periksa apakah baris di satu Pandas DataFrame ada di baris lain

Mari kita asumsikan kita memiliki dua panda DataFrames berikut:

 import pandas as pd

#create first DataFrame
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E'], 
                    ' points ': [12, 15, 22, 29, 24]}) 

print (df1)

  team points
0 to 12
1 B 15
2 C 22
3 D 29
4 E 24

#create second DataFrame
df2 = pd. DataFrame ({' team ': ['A', 'D', 'F', 'G', 'H'],
                    ' points ': [12, 29, 15, 19, 10],
                    ' assists ': [4, 7, 7, 10, 12]})

print (df2)

  team points assists
0 to 12 4
1 D 29 7
2 F 15 7
3 G 19 10
4:10:12

Kita dapat menggunakan sintaks berikut untuk menambahkan kolom yang disebut ada ke DataFrame pertama yang menunjukkan apakah setiap nilai dalam kolom tim dan poin di setiap baris ada di DataFrame kedua:

 import numpy as np

#merge two dataFrames and add indicator column
all_df = pd. merge (df1, df2, on=[' team ', ' points '], how=' left ', indicator=' exists ')

#drop assists columns
all_df = all_df. drop (' assists ', axis= 1 )

#add column to show if each row in first DataFrame exists in second
all_df[' exists '] = np. where (all_df. exists == ' both ', True , False )

#view updated DataFrame
print (all_df)

  team points exists
0 A 12 True
1 B 15 False
2 C 22 False
3 D 29 True
4 E 24 False

Kolom baru ada menunjukkan apakah setiap nilai di kolom tim dan poin di setiap baris ada di DataFrame kedua.

Dari hasilnya kita dapat melihat:

  • Nilai tim A dan nilai poin 12 ada di DataFrame kedua.
  • Nilai tim B dan nilai poin 15 tidak ada di DataFrame kedua.
  • Nilai tim C dan nilai poin 22 tidak ada di DataFrame kedua.
  • Nilai tim D dan nilai poin 29 ada di DataFrame kedua.
  • Nilai tim E dan nilai poin 24 tidak ada di DataFrame kedua.

Perhatikan juga bahwa Anda dapat menentukan nilai selain True dan False di kolom ada dengan mengubah nilai di fungsi NumPy Where() .

Misalnya, Anda dapat menggunakan “ada” dan “tidak ada” sebagai berikut:

 #add column to show if each row in first DataFrame exists in second
all_df[' exists '] = np. where (all_df. exists == ' both ', ' exists ', ' not exists ')

#view updated DataFrame
print (all_df)

  team points exists
0 to 12 exists
1 B 15 not exists
2 C 22 not exists
3 D 29 exists
4 E 24 not exists

Perhatikan bahwa nilai pada kolom yang ada telah diubah.

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di panda:

Pandas: tambahkan kolom dari satu DataFrame ke DataFrame lainnya
Pandas: Dapatkan baris yang tidak ada di DataFrame lain
Pandas: cara memeriksa apakah beberapa kolom sama

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *