Як виправити: ви намагаєтеся об’єднати стовпці 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» не має атрибута «додавання».
Як виправити: якщо ви використовуєте всі скалярні значення, вам потрібно передати індекс

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *