【发布时间】:2016-05-22 04:46:32
【问题描述】:
我在使用 Python 2.7 中的 not in 比较运算符时遇到问题。我有一份美国各州缩写的列表,我想检查给定的缩写是否不在该列表中,所以我使用:
'IL' not in states['Abbreviation']
没想到,我得到了一个 True;但是,当我执行以下操作时,我也得到了正确的结果。
'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 notebook 中使用 pandas 定义了列表
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
【问题讨论】:
-
向我们展示您的
states['Abbreviation'] -
显示完整的可执行代码,以便其他人可以重现您声称的行为。这个问题的答案取决于您没有向我们展示过的东西。
-
如果
states['Abbreviation']是一个缩写列表,并且如果它包含'IL',那么not in操作应该返回False。一定还有更多你没有展示的东西。您可能打错了某些内容并在您的帖子中更正了它。尝试重现问题,如果再次发生,请包含states['Abbreviation']的定义。 -
好的,那么所有这些数字是从哪里来的?试试这个:
type(states['Abbreviation'])看看它真的是什么。它看起来不像一个列表。 -
好吧,怀疑它根本不是 Python 列表。这就是为什么
not in没有达到你的预期。
标签: python python-2.7 pandas string-comparison