我可以检查pandas列中是否有多个值吗?

时间:2016-01-15 03:08:05

标签: python pandas

我正在尝试检查所有预期值是否都在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都缺失了。

如何准确检查数据框列中是否有多个值?

1 个答案:

答案 0 :(得分:2)

printlndf['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 中的成员资格。