这是一个小例子:
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列中?
答案 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()
你显然可以将它组合成一行,但我认为两个更适合说明命令。