我正在尝试检查我的所有预期值是否都在 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 丢失了。
如何准确检查数据框列中是否存在多个值?
最佳答案
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
您应该在 df['ExpectedId'].values
中测试成员资格。
关于python - 我可以检查 pandas 列中是否有多个值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34803759/