Як виправити: ви намагаєтеся об’єднати стовпці object і int64
Помилка, з якою ви можете зіткнутися під час використання панд:
ValueError : You are trying to merge on int64 and object columns.
If you wish to proceed you should use pd.concat
Ця помилка виникає, коли ви намагаєтесь об’єднати два DataFrame pandas, але стовпець, який ви об’єднуєте, є об’єктом в одному DataFrame та цілим числом в іншому DataFrame.
У наступному прикладі показано, як виправити цю помилку на практиці.
Як відтворити помилку
Скажімо, ми створюємо такі два panda DataFrames:
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
Тепер припустімо, що ми спробуємо об’єднати два DataFrames:
#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
Ми отримуємо ValueError , тому що змінна year у першому DataFrame є цілим числом, а змінна year у другому DataFrame є об’єктом.
Як виправити помилку
Найпростіший спосіб виправити цю помилку — просто перетворити змінну року другого DataFrame на ціле число, а потім виконати об’єднання.
Наступний синтаксис показує, як це зробити:
#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
Зауважте, що ми не отримуємо жодних помилок ValueError і нам вдається успішно об’єднати два DataFrames в один.
Додаткові ресурси
У наступних посібниках пояснюється, як виправити інші типові помилки в Python:
Як виправити: стовпці перекриваються, але суфікс не вказано
Як виправити: об’єкт «numpy.ndarray» не має атрибута «додавання».
Як виправити: якщо ви використовуєте всі скалярні значення, вам потрібно передати індекс