"not in" 比较未按预期工作
"not in" comparison not working as expected
我在使用 Python 2.7 中的 not in
比较运算符时遇到问题。我有一个美国州缩写列表,我想检查给定的缩写是否不在该列表中,所以我使用:
'IL' not in states['Abbreviation']
没想到,我得到了一个True;但是,当我执行以下操作时,我也会得到一个 true。
'IL' == states['Abbreviation'][13]
'IL'
是缩写列表中的第 14 项,当我使用 ==
时我可以证明它在列表中;但是,当我使用 not in
比较时,它没有在列表中看到它?给出了什么?
我对 python 有点陌生,所以希望答案不会太尴尬。
谢谢,
迈克尔
编辑:是的,我在发帖前尽力 'google' 一个答案,但是在 Google 中搜索术语 'not in' 是徒劳的,我描述的行为以上似乎与文档中所说的比较工作方式不一致。
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
编辑 3:
我在 iPython notebook
中使用 pandas 定义了列表
import pandas as pd
states = pd.read_table('states.csv', sep=',')
states.csv 是一个文件,第一列是州名,第二列是缩写。这就是全部。令我困惑的是为什么可以在一行中使用 ==
来显示它在列表中,然后没有 not in
给出正确答案?
编辑4:
根据回复的要求,
In [92]: type(states['Abbreviation'])
Out[92]: pandas.core.series.Series
看起来你的 states
不是列表,而是 pandas DataFrame,states['Abbreviation']
是它的列之一(pandas 系列)。在 Series 上使用 in
检查值是否在索引中,而不是值中。试试 'IL' in states['Abbreviation'].values
.
我在使用 Python 2.7 中的 not in
比较运算符时遇到问题。我有一个美国州缩写列表,我想检查给定的缩写是否不在该列表中,所以我使用:
'IL' not in states['Abbreviation']
没想到,我得到了一个True;但是,当我执行以下操作时,我也会得到一个 true。
'IL' == states['Abbreviation'][13]
'IL'
是缩写列表中的第 14 项,当我使用 ==
时我可以证明它在列表中;但是,当我使用 not in
比较时,它没有在列表中看到它?给出了什么?
我对 python 有点陌生,所以希望答案不会太尴尬。
谢谢,
迈克尔
编辑:是的,我在发帖前尽力 'google' 一个答案,但是在 Google 中搜索术语 'not in' 是徒劳的,我描述的行为以上似乎与文档中所说的比较工作方式不一致。
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
编辑 3:
我在 iPython notebook
中使用 pandas 定义了列表import pandas as pd
states = pd.read_table('states.csv', sep=',')
states.csv 是一个文件,第一列是州名,第二列是缩写。这就是全部。令我困惑的是为什么可以在一行中使用 ==
来显示它在列表中,然后没有 not in
给出正确答案?
编辑4:
根据回复的要求,
In [92]: type(states['Abbreviation'])
Out[92]: pandas.core.series.Series
看起来你的 states
不是列表,而是 pandas DataFrame,states['Abbreviation']
是它的列之一(pandas 系列)。在 Series 上使用 in
检查值是否在索引中,而不是值中。试试 'IL' in states['Abbreviation'].values
.