获取python中所有列中存在的值的列表

时间:2019-04-11 17:22:39

标签: python python-3.x pandas

我有以下数据帧df:

value1  value2  value3
1        4      9
2        3      1
3        1      3
5        2      2
6        7      4

如何获取所有列中共有的值列表。 list = [1,2,3],因为在所有三列中都存在1,2,3。我能够检查这些值是否在同一行中,而不是在整个数据集中。

3 个答案:

答案 0 :(得分:2)

使用set intersection

@RafaelC指出不需要reduce + lambda

set.intersection(*df.agg(set))
{1, 2, 3}

from functools import reduce

list(reduce(lambda x,y: x & y, [*df.agg(set)]))
#[1, 2, 3]

答案 1 :(得分:0)

尝试一下:

set(df['value1'])&set(df['value2'])&set(df['value3'])

答案 2 :(得分:0)

单向

import functools;import operator
functools.reduce(operator.and_,list(map(set,df.values.T)))
Out[278]: {1, 2, 3}