“不在”比较不按预期工作

2024-04-24 15:27:11 发布

您现在位置:Python中文网/ 问答频道 /正文

python2.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

编辑3:

我用iPython笔记本中的pandas定义了这个列表

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

你知道吗州.csv是一个文件,第一列包含州名称,第二列包含缩写。差不多就这些了。让我困惑的是,为什么is可以在一行中使用==来显示它在列表中,而没有not in给出正确的答案?你知道吗

编辑4:

应回复要求

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

Tags: csv答案in证明编辑pandas列表not
1条回答
网友
1楼 · 发布于 2024-04-24 15:27:11

看起来您的states不是一个列表,而是一个pandas数据帧,states['Abbreviation']是它的一个列(pandas系列)。对序列使用in检查值是否在索引中,而不是值中。试试'IL' in states['Abbreviation'].values。你知道吗

相关问题 更多 >