2016-05-22 32 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

好的,那有效。真的很抱歉,这很简单。由于这种不一致的结果,我的头撞在墙上。谢谢您的帮助。 –