Jak naprawić: próbujesz scalić kolumny object i int64


Błąd, który możesz napotkać podczas korzystania z pand, to:

 ValueError : You are trying to merge on int64 and object columns.
            If you wish to proceed you should use pd.concat

Ten błąd występuje, gdy próbujesz połączyć dwie ramki danych pand, ale kolumna, którą łączysz, jest obiektem w jednej ramce danych i liczbą całkowitą w drugiej ramce danych.

Poniższy przykład pokazuje, jak w praktyce skorygować ten błąd.

Jak odtworzyć błąd

Załóżmy, że tworzymy następujące dwie ramki danych pandy:

 import pandas as pd

#createDataFrame
df1 = pd. DataFrame ({' year ': [2015, 2016, 2017, 2018, 2019, 2020, 2021],
                    ' sales ': [500, 534, 564, 671, 700, 840, 810]})

df2 = pd. DataFrame ({' year ': ['2015', '2016', '2017', '2018', '2019', '2020', '2021'],
                    ' refunds ': [31, 36, 40, 40, 43, 70, 62]})

#view DataFrames
print (df1)

   year sales
0 2015 500
1 2016 534
2 2017 564
3 2018 671
4 2019 700
5,2020 840
6 2021 810

print (df2)

   year refunds
0 2015 31
1 2016 36
2 2017 40
3 2018 40
4 2019 43
5 2020 70
6 2021 62

Załóżmy teraz, że próbujemy połączyć dwie ramki danych:

 #attempt to merge two DataFrames
big_df = df1. merge (df2, on=' year ', how=' left ')

ValueError : You are trying to merge on int64 and object columns.
            If you wish to proceed you should use pd.concat

Otrzymujemy błąd ValueError , ponieważ zmienna roku w pierwszej ramce danych jest liczbą całkowitą, ale zmienna roku w drugiej ramce danych jest obiektem.

Jak naprawić błąd

Najłatwiejszym sposobem naprawienia tego błędu jest po prostu przekonwertowanie zmiennej roku drugiej ramki danych na liczbę całkowitą, a następnie wykonanie scalania.

Poniższa składnia pokazuje, jak to zrobić:

 #convert year variable in df2 to integer
df2[' year ']=df2[' year ']. astype (int)

#merge two DataFrames
big_df = df1. merge (df2, on=' year ', how=' left ')

#view merged DataFrame
big_df

	year sales refunds
0 2015 500 31
1 2016 534 36
2 2017 564 40
3 2018 671 40
4 2019 700 43
5 2020 840 70
6 2021 810 62

Należy pamiętać, że nie otrzymaliśmy żadnego błędu ValueError i udało nam się pomyślnie połączyć dwie ramki DataFrame w jedną.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w Pythonie:

Jak naprawić: Kolumny nakładają się, ale nie określono żadnego sufiksu
Jak naprawić: Obiekt „numpy.ndarray” nie ma atrybutu „dołącz”.
Jak naprawić: jeśli używasz wszystkich wartości skalarnych, musisz przekazać indeks

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *