2016-05-22 53 views
1

我在Python 2.7中的not in比較運算符遇到問題。我有美國州縮寫列表,我要檢查,如果給定的縮寫,是不在該列表中,所以我用:「不在」比較不按預期工作

'IL' not in states['Abbreviation'] 

沒想到,我得到了一個真正的;然而,當我做到以下時,我也會得到一個真實的。

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

'IL'是縮寫的名單上的第14項,而當我使用==我可以證明它是在列表中;但是,當我使用not in比較時,它在列表中看不到它?是什麼賦予了?

我對Python有點新,所以希望答案不要太尷尬。

感謝,

邁克爾

編輯:是的,我做我的最好的發佈,但條款谷歌搜索之前,「谷歌」答案「不」是一個徒勞的努力,以及上面描述的行爲似乎與文檔中所說的比較工作方式並不一致。

EDIT2:列表

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:

我定義使用大熊貓IPython的筆記本

import pandas as pd 
states = pd.read_table('states.csv', sep=',') 

states.csv是文件中的第一個包含國家名稱列表列和第二個縮寫。這幾乎都是。我感到困惑的是,爲什麼可以在一行中使用==來顯示它在列表中,然後沒有not in給出正確答案?

EDIT4:

按照要求通過答覆,

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

向我們展示您的狀態['Abbreviation']' –

+1

顯示完整的可執行代碼,以便其他人可以重現您聲明的行爲。這個答案取決於你沒有向我們展示過的東西。 –

+2

如果'states ['Abbreviation']'是縮寫列表,並且它包含'IL',那麼'not in'操作應該返回'False'。一定還有一些你還沒有顯示的東西。您可能錯誤輸入了某些內容,並在您的帖子中更正了它。嘗試重現問題,如果它再次發生,請包括'states ['Abbreviation']'的定義。 –

回答

7

它看起來像你的states不是一個名單,但大熊貓據幀,並且states['Abbreviation']是它的一列(一個熊貓系列) 。在Series上使用in會檢查值是否在索引中,而不是值。嘗試'IL' in states['Abbreviation'].values

+0

好的,那有效。真的很抱歉,這很簡單。由於這種不一致的結果,我的頭撞在牆上。謝謝您的幫助。 –