确定值是否在 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
我有一个黑名单,其中包含从 .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