Cara memperbaiki: hanya dapat membandingkan objek serial berlabel identik
Kesalahan yang mungkin Anda temui saat menggunakan pandas adalah:
ValueError : Can only compare identically-labeled DataFrame objects
Kesalahan ini terjadi ketika Anda mencoba membandingkan dua panda DataFrames dan label indeks atau label kolom tidak cocok dengan sempurna.
Contoh berikut menunjukkan cara memperbaiki kesalahan ini dalam praktiknya.
Bagaimana cara mereproduksi kesalahan tersebut
Mari kita asumsikan kita memiliki dua panda DataFrames berikut:
import pandas as pd #define DataFrames df1 = pd. DataFrame ({' points ': [25, 12, 15, 14], ' assists ': [5, 7, 13, 12]}) df2 = pd. DataFrame ({' points ': [25, 12, 15, 14], ' assists ': [5, 7, 13, 12]}, index=[3, 2, 1, 0]) #view DataFrames print (df1) assist points 0 25 5 1 12 7 2 15 13 3 14 12 print (df2) assist points 3 25 5 2 12 7 1 15 13 0 14 12
Perhatikan bahwa label kolom cocok, namun label indeks tidak.
Jika kami mencoba membandingkan kedua DataFrame, kami akan menerima kesalahan:
#attempt to compare the DataFrames
df1 = df2
ValueError : Can only compare identically-labeled DataFrame objects
Bagaimana cara memperbaiki kesalahan tersebut
Ada beberapa metode yang dapat kita gunakan untuk mengatasi kesalahan ini.
Metode 1: Bandingkan DataFrames (termasuk label indeks)
Kita dapat menggunakan sintaks berikut untuk membandingkan kedua DataFrame untuk melihat apakah keduanya cocok (termasuk label indeks):
df1. equals (df2)
False
Ini memberitahu kita bahwa kedua DataFrame tidak cocok secara sempurna (termasuk label indeks).
Metode 2: Bandingkan DataFrames (Abaikan Label Indeks)
Kita dapat menggunakan sintaks berikut untuk membandingkan dua DataFrame untuk melihat apakah keduanya cocok, sambil mengabaikan label indeks:
df1. reset_index (drop= True ). equals ( df2.reset_index (drop= True ))
True
Ini memberitahu kita bahwa kedua DataFrame sangat cocok (mengabaikan label indeks).
Metode 3: Bandingkan DataFrames baris demi baris
Kita dapat menggunakan sintaks berikut untuk membandingkan dua DataFrames baris demi baris untuk melihat nilai baris mana yang cocok:
df1. reset_index (drop= True ) == df2. reset_index (drop= True )
assist points
0 True True
1 True True
2 True True
3 True True
Ini memungkinkan kita melihat nilai mana yang cocok di setiap baris.
Sumber daya tambahan
Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya dengan Python:
Cara Memperbaiki KeyError di Pandas
Cara Memperbaiki: ValueError: Tidak dapat mengubah float NaN menjadi int
Cara Memperbaiki: ValueError: Operan tidak dapat disiarkan dengan bentuk