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