#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']
? Мне интересно, может быть, есть пробелы или что-то такое, что заставляет их выглядеть одинаково, но не сравнивать одинаково