我正在尝试检查所有预期值是否都在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.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都缺失了。
如何准确检查数据框列中是否有多个值?
答案 0 :(得分:2)
println
是df['ExpectedId']
,当您测试成员资格时,其行为类似于Series
:
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
中的成员资格。