2016-05-22 2 views
1

Python 2.7の比較演算子not inに問題があります。私は、米国の州の略語のリストを持っている、と私は与えられた略語は、そのリストにないかどうかを確認したいので、私は使用します。"not in"比較が期待通りに機能しない

'IL' not in states['Abbreviation'] 

意外なことに、私は真のです。しかし、私が次のことをすると、私も真実を得る。

'IL' == states['Abbreviation'][13] 

'IL'略語のリストの14番目の項目である、と私は==を使用するとき、私はそれがリストにあることを証明することができます。しかし、not inの比較を使用すると、リストに表示されません。何がありますか?

私は少しPythonには新しいので、うまくいけば答えはあまりにも恥ずかしいではありません。

おかげで、

マイケル

EDIT:はい、私は投稿が、無益な試みである「ないで」用語のグーグルを検索する前に、答えを "Googleのために私のベストを尽くしたし、上で説明した動作は、比較がドキュメントでどのように動作するかとは一貫していないようです。

EDIT2:私は最初に状態名を含んでいstates.csvがファイルである

import pandas as pd 
states = pd.read_table('states.csv', sep=',') 
iPythonノートブックにパンダを使用してリストを定義し

:リスト

in[89]: states['Abbreviation'] 

out[89]: 

0  AL 
1  AK 
2  AZ 
3  AR 
4  CA 
5  CO 
6  CT 
7  DE 
8  DC 
9  FL 
10 GA 
11 HI 
12 ID 
13 IL 
14 IN 
15 IA 
16 KS 
17 KY 
18 LA 
19 ME 
20 MT 
21 NE 
22 NV 
23 NH 
24 NJ 
25 NM 
26 NY 
27 NC 
28 ND 
29 OH 
30 OK 
31 OR 
32 MD 
33 MA 
34 MI 
35 MN 
36 MS 
37 MO 
38 PA 
39 RI 
40 SC 
41 SD 
42 TN 
43 TX 
44 UT 
45 VT 
46 VA 
47 WA 
48 WV 
49 WI 
50 WY 
Name: Abbreviation, dtype: object 

EDIT3列、および2番目の略語です。それはほとんどすべてです。私が混乱した理由は、それがリストにあったことを示すために==を1行で使用すると、not inが正しい答えを返さない理由は何ですか?

EDIT4:

応答が要求したとして、

In [92]: type(states['Abbreviation']) 
Out[92]: pandas.core.series.Series 
+9

あなたの 'states ['Abbreviation']'を表示してください。 –

+1

あなたが主張する行動を他の人が再現できるように、完全な実行可能コードを表示してください。この答えは、あなたが私たちに示した何かに依存しています。 –

+2

'states ['省略形']'が略語のリストで、 'IL'が含まれている場合、 'not in'演算は' False'を返すはずです。あなたが示していない何かがあるはずです。あなたはミスタイプしてあなたの投稿で修正したかもしれません。問題が再現するようにしてください。問題が再現する場合は、 'states ['Abbreviation']'の定義を含めてください。 –

答えて

7

あなたstatesリストが、パンダのデータフレームではなく、states['Abbreviation']は、その列の1(パンダシリーズ)であるように見えます。 Seriesでinを使用すると、値がインデックスではなく値に含まれているかどうかがチェックされます。試してください'IL' in states['Abbreviation'].values

+0

これはうまくいきました。それがいかに簡単か本当に残念。その矛盾した結果のために、私の頭を壁に叩いていた。助けてくれてありがとう。 –

関連する問題