Python 3.7 Невозможно объединить 2 кадра данных

Я пытаюсь объединить два фрейма данных вместе. df1 основан на слиянии других файлов (GTFS -маршруты, поездки, время остановки), а df2 - это файл времени остановки.

Когда я пытаюсь выполнить слияние, я получаю сообщение ValueError:

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

Я хочу объединить df, и я подтвердил, что два ключа, которые я пытаюсь объединить, являются строковыми объектами.

Я использую следующее, чтобы попытаться объединить два df

df3 = df1.join(df2, how='inner', on='stop_id')

Я попытался записать и прочитать df в файл и обратно, как это было предложено этот вопрос, а также приведение обоих столбцов к строковому объекту с использованием df.stop_id = df.stop_id.astype('str')

Я прочитал в файлах явное указание, что все столбцы являются строками

df2= pd.read_csv('stops.txt', dtype={'stop_id': 'str',
                                     'stop_code': 'str',
                                     'stop_name': 'str',
                                     'stop_lat': 'str',
                                     'stop_lon': 'str',
                                     'location_type': 'str',
                                     'parent_station': 'str',
                                     'wheelchair_boarding': 'str',
                                     'platform_code': 'str'})

и проверьте типы данных

df1.stop_id.dtype
df2.stop_id.dtype

оба производят

dtype('O')

Но слияние по-прежнему не выполняется с указанной выше ошибкой. Как я могу решить эту проблему?


person theotheraussie    schedule 24.07.2019    source источник
comment
Пожалуйста, посмотрите и правильный ответ на этот вопрос. Я надеюсь, это поможет. stackoverflow.com/ вопросы/52902909/   -  person Madhur Yadav    schedule 24.07.2019
comment
любезно предоставьте образцы данных с желаемым результатом   -  person tawab_shakeel    schedule 24.07.2019


Ответы (1)


попробуйте pd.merge объединить оба фрейма данных

Сначала преобразуйте stop_id в str в обоих фреймах данных

df1['stop_id'] = df1['stop_id'].astpye(str)
df2['stop_id'] = df2['stop_id'].astpye(str)

df3 = pd.merge(df1,df2,how='inner',on=['stop_id'])
person tawab_shakeel    schedule 24.07.2019