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

标签 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 丢失了。

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

最佳答案

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/

相关文章:

python - 在 pandas 数据框单元格中插入列表

python - 在 Dataframe 中为每个组取下一个较低的值

python - 在 Pandas 系列上成对应用函数

python - 从词袋数据框到数组的更快的 Python 实现

python - 寻找 DSL 将 JSON 转换为 CSV

python - 通过 Homebrew 软件在 macOS 上安装 numpy、scipy 和 matplotlib 的不同方法

python - 用于目标定位的卷积神经网络

python - 数据类型为对象的日期格式问题

python - wxPython 在 Vista 下崩溃

python - Pandas 转置重置小数舍入