我有以下数据帧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。我能够检查这些值是否在同一行中,而不是在整个数据集中。
答案 0 :(得分:2)
@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}