Я следую различным учебным пособиям по Python для дедупликации в Интернете, но продолжаю сталкиваться с этой ошибкой, какой бы я ни пытался:
ValueError: Records do not line up with data model. The field 'firstname ' is in data_model but not in a record
У кого-то на их github возникла та же проблема: https://github.com/dedupeio/csvdedupe/issues/55, иразработчик сказал, что обучающие примеры должны иметь любую запись в этом сообщении об ошибке.
Мои данные имеют записи firstname
, как и переменная fields.
Данные для дедупликации:
{76550: {'id': '76550',
'title': 'mrs',
'firstname': 'mary',
'lastname': 'fakename',
'email': 'fakemail@yahoo.com',
'phone': None,
'mobile': '353870748',
etc etc etc}
и вот поля:
fields = [
{'field' : 'firstname ', 'type': 'String','has missing' : True},
{'field' : 'lastname ', 'type': 'String','has missing' : True},
{'field' : 'email', 'type': 'String','has missing' : True},
{'field' : 'address1', 'type': 'String', 'has missing' : True},
{'field' : 'mobile', 'type': 'String', 'has missing' : True},
]
Ошибка вызвана здесь:
# Pass in our model
deduper = dedupe.Dedupe(fields)
# Feed some sample data in ... 1500 records
deduper.sample(df, 1500)
ValueError Traceback (most recent call last)
<ipython-input-89-e34caa52a74c> in <module>
2
3 # Feed some sample data in ... 15000 records
----> 4 deduper.sample(df, 1500)
~\Anaconda3\envs\Tensorflow\lib\site-packages\dedupe\api.py in sample(self, data, sample_size, blocked_proportion, original_length)
789 a sample of full data
790 '''
--> 791 self._checkData(data)
792
793 self.active_learner = self.ActiveLearner(self.data_model,
~\Anaconda3\envs\Tensorflow\lib\site-packages\dedupe\api.py in _checkData(self, data)
802 'Dictionary of records is empty.')
803
--> 804 self.data_model.check(next(iter(viewvalues(data))))
805
806
~\Anaconda3\envs\Tensorflow\lib\site-packages\dedupe\datamodel.py in check(self, record)
119 raise ValueError("Records do not line up with data model. "
120 "The field '%s' is in data_model but not "
--> 121 "in a record" % field)
122
123
ValueError: Records do not line up with data model. The field 'firstname ' is in data_model but not in a record
У обоих в них firstname
.
Куда я иду не так?
Я пыталсятранспонировать фрейм данных и конвертировать в dict разными способами.Я не могу заставить его работать.