如何检查列的所有元素是否在另一列中?

时间:2014-12-30 23:21:10

标签: python-3.x pandas

这是一个小例子:

In [1]: from pandas import DataFrame

In [2]: df = DataFrame({"x":range(10), "y":0})

In [3]: df
Out[3]:
   x  y
0  0  0
1  1  0
2  2  0
3  3  0
4  4  0
5  5  0
6  6  0
7  7  0
8  8  0
9  9  0

如何检查y列的所有元素是否在x列中?

2 个答案:

答案 0 :(得分:2)

一个班轮:

all([i in df['x'] for i in df['y']])

更新

如果您在演出后,可以在' x'上设置索引。并删除列表理解并使其成为生成器,它进一步缩短了查找时间。

df = df.set_index('x')

%timeit all(i in df.index for i in set(df['y']))
100000 loops, best of 3: 14.7 µs per loop

或者,如果您的数据会有重复,除了构建索引之外,您还可以考虑分配像x, y = set(df['x']), set(df['y'])这样的临时名称,以进一步减少重复记录并获得轻微的性能提升。

答案 1 :(得分:1)

这将为您提供一个系列,其中每个元素都会告诉您列x的相应元素是否在y列中:

in_y = df['x'].apply(lambda x : x in df['y'])

然后使用.all()方法:

all_in_y = in_y.all()

你显然可以将它组合成一行,但我认为两个更适合说明命令。