Я пытаюсь объединить два фрейма данных в одном столбце commit_id
.Однако они не объединяются даже после проверки типов данных, чтобы убедиться, что они совпадают.
Мой первый кадр данных - df1
, который содержит два столбца: commit_id
и final_sentiment
.Мой второй фрейм данных - df2
, который содержит два столбца: commit_id
и modification
.
Я пытаюсь объединиться в df3
, который будет содержать commit_id
, modification
и final_sentiment
,Однако, если я сделаю левое соединение на df2
, все значения в final_sentiment
будут NaN
.Если я сделаю правильное соединение, все значения в modification
равны NaN
.Я проверил тип commit_id
и это объект.Основываясь на этом вопросе и этом , я попытался изменить тип на строку как таковой до объединения фреймов данных, но это не сработало.
df1.commit_id = df1.commit_id.astype(str)
df2.commit_id = df2.commit_id.astype(str)
РЕДАКТИРОВАТЬ: вот более сжатая версия данных, чтобы, надеюсь, прояснить вопрос.
У меня есть df1
:
| index | commit_id | final_sentiment |
|--------|------------------------------------------|-----------------|
| 807303 | 000e3673387b662e32f1037eeaea2aa29b630448 | -1 |
и яhave df2
:
| | commit_id | modification |
|---|------------------------------------------|--------------|
| 0 | 000e3673387b662e32f1037eeaea2aa29b630448 | 13 |
df1.info()
возвращает:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1 entries, 807303 to 807303
Data columns (total 2 columns):
commit_id 1 non-null object
final_sentiment 1 non-null int64
dtypes: int64(1), object(1)
memory usage: 24.0+ bytes
df2.info () возвращает:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1 entries, 0 to 0
Data columns (total 2 columns):
commit_id 1 non-null object
modification 1 non-null int64
dtypes: int64(1), object(1)
memory usage: 88.0+ bytes
Как вы можете видеть, онитот же тип для идентификатора фиксации, но когда я объединяю, он все еще возвращает NaN:
df3 = df2.merge(df1, on='commit_id', how='left')
df3
df3 возвращает:
| | commit_id | modification | final_sentiment |
|---|------------------------------------------|--------------|-----------------|
| 0 | 000e3673387b662e32f1037eeaea2aa29b630448 | 13 | NaN |
он должен возвращать:
| | commit_id | modification | final_sentiment |
|---|------------------------------------------|--------------|-----------------|
| 0 | 000e3673387b662e32f1037eeaea2aa29b630448 | 13 | -1 |
Извините, за плохое форматирование.Форматирование ноутбука Jupyter не очень хорошо в стеке потока.
Как видите, я проверяю типы обоих фреймов данных, и они одинаковы.Я показываю как внутреннее соединение, так и левое соединение.Внутреннее соединение не возвращает результата, но левое соединение возвращает результат, как и должно быть, но последний мод - NaN.
Как получить правильное слияние фреймов данных, я не уверен, что происходит неправильноздесь