次のような「site.id」という列を含む「impression_data」という名前の Pandas データフレームがあります。
>>> 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
しかし、ここに予想外の結果があります。私は、 の列には 10 進数の値を一切含めるべきではないという印象を受けました。どうやら私は間違っているようです。何が起きてる?
>>> 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
そしてここ