确定值是否在 Excel 文件中(Pandas)

Identifying if value is in Excel File (with Pandas)

我有一个黑名单,其中包含从 .xls 文件中读取的数字(无法更改这一事实)。在遍历大量事物时,我必须检查我的事物的当前数量是否在所述黑名单中。到目前为止,我的代码看起来像这样:

正在打开 Excel 文件:

blacklist = pd.read_excel("blacklist.xls", sheetname=0, header=0)

比较(在for-loop内):

if (temp in blacklist.NUMBERCOL.values):
    continue

条件抛出以下错误:FutureWarning:元素比较失败;返回标量,但将来会执行逐元素比较。当谷歌搜索这个错误时,我只找到了一些 matplotlib 的错误报告,但没有任何帮助我理解发生了什么。

blacklisting-if 似乎不起作用,所以我想我必须修复警告。

excel 文件只有 2 列 headers "NUMBERCOL" 和 "comment",所有单元格的格式都为 "text".

我在另一个数据帧(来自 SQL 语句)中使用了完全相同的代码,并且它工作得很好。所以我假设我的黑名单数据框或其他东西的结构有问题?

edit 看来问题与我的临时变量的数据类型有关,但我不知道如何解决。未将其转换为字符串时出现一些 unicode 错误,尝试将其转换为整数时出现一些文字错误。也许需要先消毒我的温度?

运行 你的代码覆盖你的文件:

             EAN          Kommentar
0  9009519746783  beispiel von dani
1         123456               test

blacklist 的结果 dtypes 是:

EAN           int64
Kommentar    object
dtype: object

所以如果我 运行 以下内容:

In [11]: 123456 in blacklist.EAN.values
Out[11]: True

如果是:

In [12]: '123456' in blacklist.EAN.values
/Users/Fabio/anaconda/bin/ipython:1: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  #!/bin/bash /Users/Fabio/anaconda/bin/python.app
Out[12]: False

所以寻找 int 而不是字符串似乎工作正常。

编辑: 如果您必须查找字符串,一种方法是更改​​数据框的类型:

import numpy as np
blacklist['EAN']= blacklist['EAN'].astype(np.str)

那么:

In [15]: '123456' in blacklist.EAN.values
Out[15]: True