Невозможно объединить pandas dataframe для строкового типа - PullRequest
0 голосов
/ 20 октября 2018

У меня есть два объекта DataFrames, столбцы которых как показано ниже

Dataframe 1:

df.dtypes

Вывод:

ImageID       object
Source        object
LabelName     object
Confidence     int64
dtype: object

Dataframe 2:

a.dtypes

Вывод:

LabelName       object
ReadableName    object
dtype: object

Здесь я пытаюсь объединить эти два кадра данных, как показано ниже

combined =  df.join(a,on='LabelName')

Но,я получаю следующую ошибку

ValueError: Вы пытаетесь объединить столбцы объекта и int64.Если вы хотите продолжить, вы должны использовать pd.concat

Но я объединяю их с LabelName, в котором есть только строки (тип данных объекта)

Я что-то здесь упускаю?

Ответы [ 3 ]

0 голосов
/ 20 октября 2018

Существует проблема, что некоторые столбцы являются целыми числами вместе со строкой в ​​DataFrame1, в то время как все строки в DataFrame2 являются причинами проблемы.

Самое простое решение - привести все столбцы к строкам:

pd.merge(df1.astype(str),df2.astype(str), how='outer')

В качестве значения ошибки, предлагающего себя, используйте concat:

pd.concat([df1, df2])
0 голосов
/ 20 октября 2018

Попробуйте сначала преобразовать столбец Доверие в объект, потому что существует несоответствие dtype.

 df['Confidence'].apply(str)
0 голосов
/ 20 октября 2018

О параметре on в документации сказано:

Имя (я) столбца или уровня индекса в вызывающей стороне для присоединения к индексу в другом, в противном случае присоединяетсяindex-on-index.

Обратите внимание, что join() всегда использует other.index.Вы можете попробовать это:

df.join(a.set_index('LabelName'), on='LabelName')

Или использовать вместо него df.merge().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...