【问题标题】:"not in" comparison not working as expected“不在”比较未按预期工作
【发布时间】: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


【解决方案1】:

看起来您的states 不是一个列表,而是一个熊猫数据框,而states['Abbreviation'] 是它的列之一(熊猫系列)。在 Series 上使用 in 检查值是否在索引中,而不是值。试试'IL' in states['Abbreviation'].values

【讨论】:

  • 好的,成功了。真的很抱歉它是多么简单。由于结果不一致,我的头撞到了墙上。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-04
  • 1970-01-01
  • 2014-05-26
相关资源
最近更新 更多