У меня есть dataframe панды, названный «impression_data», который включает в себя колонку под названием «site.id», как это:Членство тестирования поплавков в панде Int64 dataframe производит неожиданный результат
>>> impression_data['site.id']
0 62
1 189
2 191
3 62
...
Каждый элемент в этом столбец имеет тип данных numpy.int64, как это:
>>> for i in impression_data['site.id']:
print type(i)
<type 'numpy.int64'>
<type 'numpy.int64'>
<type 'numpy.int64'>
...
И, как и ожидалось, тестирование членов работает хорошо, пока я проверяю целых чисел:
>>> 62 in impression_data['site.id']
True
Но вот неожиданный результат: у меня создалось впечатление, что столбец np.int64
не должен содержать никаких десятичных значений. Видимо, я ошибаюсь. Что тут происходит?
>>> 62.5 in impression_data['site.id']
True
Edit 1: Все значения в столбце должны быть целыми числами по построению. Для полноты картины, я также выполнены следующие операции литья и возникало никаких ошибок:
impression_data['site.id'] = impression_data['site.id'].astype('int')
В соответствии с @ BremBam-х предложений в комментариях, я попытался
impression_data['site.id'].map(type).unique()
который производит
[<type 'numpy.int64'>]
Минимальный пример и реальный файл данных, с которыми я работаю, приведены здесь https://dl.dropboxusercontent.com/u/28347262/SE%20Pandas%20Int64%20Membership%20Testing/cm_impression.csv
и здесь
Вы уверены, что каждое значение является int? Что делает 'impression_data ['site.id']. Map (type) .unique()' give? Можете ли вы предоставить пример кода и данных, которые демонстрируют проблему? – BrenBarn
Спасибо за ваш быстрый ответ, @BrenBarn. Я принял ваш совет по попытке «impression_data ['site.id']. Map (type) .unique()' и отредактировал мой вопрос, чтобы это отразить. Пример кода и данных, которые следует выполнить в ближайшее время. – avn2109
Исторически использование 'in' для массивов numpy может давать нечетные результаты - я бы предложил что-то вроде' np.any (df ['site.id']. Isin ([62.5])). – Daniel