Python 我可以检查一列中是否有多个值吗?
我试图检查我所有的期望值是否都在数据框中。预期值是提前知道的,数据帧是从数据库查询自动生成的 这是我试图做的一个例子Python 我可以检查一列中是否有多个值吗?,python,pandas,Python,Pandas,我试图检查我所有的期望值是否都在数据框中。预期值是提前知道的,数据帧是从数据库查询自动生成的 这是我试图做的一个例子 import pandas as pd import StringIO expected_ids = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] csv = StringIO.StringIO("""ExpectedID,Random Value 1,val1 2,val2 3,val3 8,val8 9,val9 10,val10 """) df = pd
import pandas as pd
import StringIO
expected_ids = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
csv = StringIO.StringIO("""ExpectedID,Random Value
1,val1
2,val2
3,val3
8,val8
9,val9
10,val10
""")
df = pd.read_csv(csv, sep=",")
for e in expected_ids:
if e not in df['ExpectedID']:
print "Missing: ", e
我的问题是,我必须逐个检查我期望的每个值,在我的实际代码中,大约有14000个这样的值。我还想把丢失的数据拉到另一个数据框中,我以后可以对其进行操作,但不知道如何操作
我的另一个问题是上面打印的是:
Missing: 6
Missing: 7
Missing: 8
Missing: 9
Missing: 10
这些值并不都是正确的。我缺少6和7,但8、9和10在df中。它也没有说4和5不见了
如何准确地检查数据帧列中是否有多个值?
df['ExpectedId']
是一个系列,在测试成员资格时,其行为类似于dict
:
In [5]: df.ExpectedId
Out[5]:
0 1
1 2
2 3
3 8
4 9
5 10
Name: ExpectedID, dtype: int64
In [6]: 0 in df['ExpectedID']
Out[6]: True
您应该在df['ExpectedId']中测试成员身份。改为测试值。
。有没有一种方法可以在不使用for循环的情况下一次检查整个列表?不过,感谢您对价值观的提示。这纠正了我所问问题的一部分。您可以使用set.difference
查找缺少的项<代码>缺少\u项=设置(预期的\u ID)。差异(df['ExpectedId'].值)
。