Не удается объединить два кадра данных в панд. Ошибка значения: вы пытаетесь объединить столбцы object и int64. Если вы хотите продолжить, вам следует использовать pd.concat

#python #pandas

Вопрос:

У меня есть два кадра данных, к которым я хочу присоединиться

 df1.join(df2, how = 'left', on = "foo")  

Я получаю

Ошибка значения: вы пытаетесь объединить столбцы object и int64. Если вы хотите продолжить, вам следует использовать pd.concat

Но оба столбца foo имеют тип object .

 print(df1.dtypes)  

Это дает мне

 foo object geometry geometry dtype: object  

Глядя на dtypes из df2

 print(df2.dtypes)  

Это дает мне

 foo object bar object num int64 dtype: object  

foo находится в обоих dataframe типах object . Даже в

 df1.dtypes["foo"] == df2.dtypes["foo"]  

возвращает a True

Почему я получаю это сообщение об ошибке?

Ответ №1:

df1.join(df2, on='foo') пытается присоединить df1[‘foo’] к индексу df2 (который, вероятно, равен int64). Чтобы объединить два кадра данных в столбцах, используйте pd.merge

Комментарии:

1. Как бы я тогда присоединился к общему имени столбца?

2. Да, это должно сработать, можете ли вы найти ключ, который встречается в обоих, и проверить, какое значение df.loc['key', 'foo'] ? Мне интересно, может быть, есть пробелы или что-то такое, что заставляет их выглядеть одинаково, но не сравнивать одинаково