我有一個數據幀大熊貓,取名爲「impression_data」,其中包括一個名爲列「site.id,」像這樣:成員測試產生意想不到的結果
>>> 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
編輯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()'給了什麼?你能否提供演示問題的示例代碼和數據? – BrenBarn
感謝您的快速回復,@BrenBarn。我接受了關於嘗試'impression_data ['site.id']。map(type).unique()'的建議'並編輯了我的問題以反映這一點。示例代碼和數據即將推出。 – avn2109
歷史上使用'in'作爲numpy數組可能會產生奇怪的結果 - 我會建議類似'np.any(df ['site.id']。isin([62.5]))''。 – Daniel